Freigeben über


Übersicht über generierten Code (Entity Data Model Designer)

Das ADO.NET Entity Framework bietet Tools, mit denen auf Grundlage des CSDL-Inhalts (konzeptionelle Schemadefinitionssprache) einer EDMX-Datei automatisch eine Objektebene generiert werden kann. Der ADO.NET Entity Data Model Designer (Entity Designer) verwendet zum Generieren von Objektebenencode standardmäßig das benutzerdefinierte Tool EntityModelCodeGenerator. Informationen zu benutzerdefinierten Tools finden Sie unter Implementieren von Einzeldatei-Generatoren. Sie können auch das Befehlszeilentool EdmGen.exe verwenden. Weitere Informationen finden Sie unter How to: Use EdmGen.exe to Generate Object Model Files. Der EntityModelCodeGenerator und das Befehlszeilentool EdmGen.exe verwenden die EntityClassGenerator-Klasse, um den Quellcode zu generieren.

Der Entity Designer kann benutzerdefinierten Objektebenencode auch mithilfe von Textvorlagen generieren. Weitere Informationen finden Sie unter Gewusst wie: Anpassen der Generierung von Objektebenencode (Entity Data Model Designer).

Generieren von Objektebenencode

Zum Auslösen des standardmäßigen benutzerdefinierten Tools zum Generieren von Objektebenencode stehen mehrere Methoden zur Verfügung:

  • Verwenden Sie den Assistenten für ADO.NET Entity Data Model. Weitere Informationen finden Sie unter Assistent für Entity Data Model.

  • Verwenden Sie den Modellaktualisierungs-Assistenten. Weitere Informationen finden Sie unter Modellaktualisierungs-Assistent (Entity Data Model-Tools).

  • Führen Sie das in der Eigenschaft Custom Tool der EDMX-Datei angegebene Tool aus. Klicken Sie dazu im Projektmappen-Explorer mit der rechten Maustaste auf eine EDMX-Datei, und wählen Sie Benutzerdefiniertes Tool ausführen aus. Weitere Informationen zu den Eigenschaften von EDMX-Dateien finden Sie unter Übersicht über die EDMX-Datei (Entity Framework).

  • Speichern Sie eine EDMX-Datei.

  • Verlassen Sie eine geänderte EDMX-Datei, indem Sie die TAB-TASTE drücken. Dadurch verlassen Sie auch eine im Entity Designer geöffnete geänderte EDMX-Datei.

  • Erstellen Sie ein Projekt, das eine geänderte EDMX-Datei enthält.

    Cc982041.note(de-de,VS.100).gifHinweis:
    Bei den obigen Optionen wird eine Visual Basic- oder C#-Quellcodedatei mit dem folgenden Namen generiert oder überschrieben: "<Modellname>.Designer.vb" oder "<Modellname>.Designer.cs".Diese Datei wird dem EDMX-Knoten im Projektmappen-Explorer hinzugefügt.

  • Verwenden Sie das Befehlszeilentool "EdmGen.exe". Das Tool "EdmGen.exe" generiert eine Visual Basic- oder C#-Quellcodedatei, deren Name und Speicherort in der Befehlszeile angegeben werden.

Cc982041.note(de-de,VS.100).gifHinweis:
Wenn Objektebenencode mit dem standardmäßigen benutzerdefinierten Tool oder dem Tool "EdmGen.exe" generiert wird, wird vorhandener Objektebenencode überschrieben.Informationen dazu, wie das Überschreiben von Anpassungen auf der Objektebene vermieden werden kann, finden Sie unter How to: Customize Generated Data Objects.

Cc982041.note(de-de,VS.100).gifHinweis:
Die basierend auf einem Funktionsimport im konzeptionellen Modell generierte Methode führt die entsprechende gespeicherte Prozedur mit der ExecuteFunction-Methode aus.Wenn Sie die Überladung verwenden, die den Zusammenführungsoptionsparameter nicht akzeptiert, wird die AppendOnly-Option verwendet.

Cc982041.note(de-de,VS.100).gifHinweis:
Beginnend mit Visual Studio 2010 legen die Codegeneratoren die LazyLoadingEnabled-Eigenschaft des ObjectContext auf den Wert des annotation:LazyLoadingEnabled -Anmerkungsattributs fest, das im konzeptionellen Modell definiert wird.In der Standardeinstellung ist der annotation:LazyLoadingEnabled-Wert auf true festgelegt.

Ermitteln des Namespaces des generierten Codes

In der Standardeinstellung ist der Namespace des generierten Codes der in der Anwendungsseite des Projekts angegebene Namespace. Wenn Sie den Namespace in der Custom Tool Namespace-Eigenschaft der EDMX-Datei angeben, wird der angegebene Namespace verwendet.

Je nach Projekttyp sind einige weitere, im Folgenden erläuterte Überlegungen erforderlich:

  • Wenn kein Wert für die Custom Tool Namespace-Eigenschaft festgelegt wurde und der Namespace des Projekts leer ist, wird in Visual Basic-Projekten der in der EDMX-Datei angegebene Namespace des konzeptionellen Modells für generierten Code verwendet. Weitere Informationen finden Sie im Thema zum Ermitteln des Standardnamespaces (möglicherweise in englischer Sprache). Wenn Sie den Namespace des benutzerdefinierten Tools angeben, stellt der Visual Studio-Compiler den Stammnamespace des Projekts dem angegebenen Namen voran. Obwohl die Typen im angegebenen Namespace definiert werden, müssen Sie beim Deklarieren der Typen defaultnamespace.specifiednamespace importieren. Wenn zum Beispiel der Stammnamespace des Projekts ProjectDefaultNamespace ist, und in der Eigenschaft Custom Tool Namespace der Wert TestNamespace angegeben ist, müssen Sie beim Deklarieren der im TestNamespace-Namespace definierten Typen folgendes verwenden: Import ProjectDefaultNamespace.TestNamespace.

  • Wenn keine Namespaces für die Custom Tool Namespace-Eigenschaft angegeben werden, ist in C#-Projekten der Namespace des generierten Codes der Standardnamespace des Projekts (wie in der Anwendungsseite des Projekts angegeben) zusammen mit dem Ordnerpfad des Speicherorts der EDMX-Datei. Wenn der Pfad der EDMX-Datei relativ zum Stammverzeichnis des Projekts z. B. "Folder1/Folder2/Model.edmx" ist, lautet der Namespace des generierten Codes "ProjectDefaultNamespace.Folder1.Folder2".

  • Bei ASP.NET-Websiteprojekten wird der im CSDL-Inhalt der EDMX-Datei definierte Namespace des konzeptionellen Modells für generierten Code verwendet, sofern sich die EDMX-Datei im Stamm des Ordners "App_Code" befindet (weitere Informationen finden Sie unter Schema Element (CSDL)). Befindet sich die EDMX-Datei in einem Unterordner des Ordners "App_Code", wird der Ordnerpfad relativ zum Ordner "App_Code" als Namespace des generierten Codes verwendet. Wenn sich die EDMX-Datei z. B. in "App_Code/Folder1/Folder2" befindet, lautet der Namespace des generierten Codes "Folder1.Folder2".

Arbeiten mit mehreren EDMX-Dateien in einem Projekt

Wenn ein Projekt mehrere EDMX-Dateien enthält, die auf Datenbanken mit allgemeinen Tabellennamen basieren, kann der generierte Code widersprüchliche Klassennamen enthalten. Die Umstände, unter denen solche Konflikte auftreten, und die Vorgehensweise zum Lösen der Konflikte hängen wie folgt vom Projekttyp ab:

  • Bei C#-Projekten können widersprüchliche Klassennamen in generiertem Code vorkommen, wenn sich mehrere EDMX-Dateien, die auf Datenbanken mit allgemeinen Tabellennamen beruhen, im gleichen Projektordner befinden. Geben Sie einen eindeutigen Wert für die Eigenschaft Custom Tool Namespace jeder EDMX-Datei an, oder speichern Sie jede EDMX-Datei in einem separaten Projektunterordner, um den Konflikt zu lösen.

  • Bei Visual Basic-Projekten können widersprüchliche Klassennamen in generiertem Code vorkommen, wenn das Projekt mehrere EDMX-Dateien enthält (an beliebigen Speicherorten), die auf Datenbanken mit allgemeinen Tabellennamen beruhen. Geben Sie einen eindeutigen Wert für die Eigenschaft Custom Tool Namespace jeder EDMX-Datei an, um den Konflikt zu lösen.

  • Bei ASP.NET-Websiteprojekten können widersprüchliche Klassennamen in generiertem Code vorkommen, wenn sich mehrere EDMX-Dateien, die auf Datenbanken mit allgemeinen Tabellennamen beruhen, im Ordner "App_Code" oder in demselben Unterordner des Verzeichnisses "App_Code" befinden. Speichern Sie jede EDMX-Datei in einem separaten Unterordner des Verzeichnisses "App_Code", um den Konflikt zu lösen.

In allen dieser Fälle wird durch die Lösung des Konflikts der Namespace des generierten Codes für jede EDMX-Datei ändert. Vorhandener Anwendungscode, der die generierten Klassen nutzt, muss möglicherweise aktualisiert werden.

Erweitern von partiellen Klassen

Mit den Entity Data Model-Tools generierte Datenklassen werden in partiellen Klassen implementiert. Funktionen können Objekten hinzugefügt werden, indem die generierten partiellen Datenklassen erweitert werden. Partielle Klassen bieten Ihnen die Möglichkeit, diese Klassen mit benutzerdefinierten Methoden und Eigenschaften in einer separaten Quelldatei zu erweitern, ohne die Anpassungen beim Aktualisieren der generierten Dateien zu verlieren. Weitere Informationen finden Sie unter How to: Customize Generated Data Objects.

In diesem Abschnitt

Siehe auch

Konzepte

Übersicht über die EDMX-Datei (Entity Framework)