Gewusst wie: Vorgenerieren von Sichten zur Verbesserung der Abfrageleistung
Bevor von Entity Framework für ein konzeptionelles Modell eine Abfrage ausgeführt oder Änderungen an der Datenquelle gespeichert werden können, muss ein Satz lokaler Abfragesichten für den Zugriff auf die Datenbank generiert werden. Die Sichten sind Teil der Metadaten, die pro Anwendungsdomäne zwischengespeichert werden. Wenn Sie mehrere Objektkontextinstanzen in derselben Anwendungsdomäne erstellen, verwenden sie erneut Sichten aus den zwischengespeicherten Metadaten, statt sie neu zu generieren. Da das Generieren von Sichten einen signifikanten Teil der Gesamtkosten der Ausführung einer einzelnen Abfrage ausmacht, können diese Sichten mit Entity Framework vorgeneriert und dem kompilierten Projekt hinzugefügt werden. Weitere Informationen finden Sie unter Leistungsaspekte (Entity Framework).
Zusätzlich zum Erstellen und Überprüfen der Entity Framework-Modell- und Zuordnungsdateien, wird das Tool EDM-Generator (EdmGen.exe) auch dazu verwendet diese Sichten zu generieren. In diesem Thema wird dargestellt, wie mithilfe von EdmGen.exe Sichten für das Modell "School" vorgeneriert werden und die Sichtdatei dem Projekt hinzugefügt wird. Das Modell "School" wird im Entity Framework -Schnellstart erstellt. Im letzten Schritt wird gezeigt, wie die Modell- und Zuordnungsdateien als eingebettete Ressourcen einer ASP.NET-Webanwendung erneut hinzugefügt werden.
Sie können auch mit dem Text Template Transformation Toolkit (Textvorlagentransformations-Toolkit) vorkompilierte Sichten generieren. Weitere Informationen finden Sie unter Gewusst wie: Verwenden einer T4-Vorlage für die Sichtengenerierung.
Hinweis: |
---|
Die Vorgehensweisen in diesem Thema verwenden Präbuild- und Postbuildereignisse in Visual Studio, die für ASP.NET-Websites nicht unterstützt werden. Um Sichten vorzugenerieren, die von einer ASP.NET-Website verwendet werden, erstellen Sie die EDMX-Datei in einer separaten Klassenbibliothek, folgen den unter How to: Use a Model Defined in a Class Library beschriebenen Vorgehensweisen für das Klassenbibliotheksprojekt und verweisen im ASP.NET-Websiteprojekt auf das Klassenbibliotheksprojekt. Möglicherweise ist es vorzuziehen, ein ASP.NET-Webanwendungsprojekt anstelle einer ASP.NET-Website zu verwenden. In diesem Fall können mithilfe der Vorgehensweisen in diesem Thema vorgenerierte Sichten im gleichen Projekt eingefügt werden, wie die ASP.NET-Webanwendung. |
Zur Wahrung der Konsistenz mit der aktuellen Version des Modells und der Zuordnungsdateien werden vorgenerierte Sichten zur Laufzeit überprüft.
In den Prozeduren in diesem Thema wird das Modell "School" verwendet. Sie können dieses Modell erstellen, indem Sie den Schnellstart (Entity Framework) abschließen. Sie können die erste Prozedur überspringen, wenn beim Erstellungsprozess bereits Modell- und Zuordnungsdateien im Ausgabeverzeichnis generiert werden.
So generieren Sie Modell- und Zuordnungsdateien für das Modell "School" im Ausgabeverzeichnis
Doppelklicken Sie im Projektmappen-Explorer auf die Datei School.edmx.
Das Modell "School" wird im Entity Designer angezeigt.
Wählen Sie im Modellbrowser das Modell "SchoolModel" aus, und ändern Sie Verarbeitung der Metadatenartefakte zu In Ausgabeverzeichnis kopieren.
Dadurch wird sichergestellt, dass die Modell- und Mappingdateien im Ausgabeverzeichnis generiert werden.
Erstellen Sie die Projektmappe.
Damit werden die Modell- und Mappingdateien im Ausgabeverzeichnis generiert.
So fügen Sie einem Visual Basic-Projekt das Generieren von Sichten hinzu
Wählen Sie im Projektmappen-Explorer das Projekt aus, für das Sie das Buildereignis angeben möchten.
Klicken Sie im Menü Projekt auf Projekt Eigenschaften.
Klicken Sie auf der Seite Eigenschaften auf die Registerkarte Kompilieren.
Klicken Sie auf die Schaltfläche Buildereignisse.
Fügen Sie im Dialogfeld Buildereignisse das folgende Präbuildereignis hinzu (ohne Zeilenumbrüche):
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:VB /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.vb"
Klicken Sie auf OK.
Schließen Sie die Seite Projekteigenschaften.
Erstellen Sie die Projektmappe.
Damit wird die Sichtdatei School.Views.vb generiert.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie Vorhandenes Element hinzufügen aus.
Navigieren Sie im Dialogfeld Vorhandenes Element hinzufügen zum Stammordner des Projekts, und wählen Sie die Datei School.Views.vb aus.
Klicken Sie auf Hinzufügen.
Erstellen Sie die Projektmappe.
So fügen Sie einem C#-Projekt das Generieren von Sichten hinzu
Wählen Sie im Projektmappen-Explorer das Projekt aus, für das Sie das Buildereignis angeben möchten.
Klicken Sie im Menü Projekt auf Eigenschaften.
Wählen Sie die Registerkarte Buildereignisse aus.
Fügen Sie im Fenster Befehlszeile für Präbuildereignis das folgende Präbuildereignis hinzu (ohne Zeilenumbrüche):
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.cs"
Erstellen Sie die Projektmappe.
Damit wird die Sichtdatei School.Views.cs generiert.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie Vorhandenes Element hinzufügen aus.
Das Dialogfeld Vorhandenes Element hinzufügen wird angezeigt.
Navigieren Sie zum Stammordner des Projekts, und wählen Sie die Datei School.Views.cs aus.
Klicken Sie auf Hinzufügen.
Erstellen Sie die Projektmappe.
So fügen Sie Mapping- und Modelldateien als eingebettete Ressourcen für ASP.NET-Projekte erneut hinzu
Klicken Sie im Menü Projekt auf Vorhandenes Element hinzufügen.
Navigieren Sie zum Ausgabeverzeichnis für das Projekt, wählen Sie School.csdl aus, und klicken Sie dann auf OK.
Wählen Sie im Projektmappen-Explorer die hinzugefügte Datei aus.
Legen Sie unter Eigenschaften die Option Buildvorgang auf Eingebettete Ressource fest.
Wiederholen Sie die Schritte 1 bis 3 für die Dateien School.ssdl und School.msl.
Doppelklicken Sie im Projektmappen-Explorer auf die Datei App.config, und ändern Sie anschließend den Metadata-Parameter des connectionString-Attributs unter Verwendung eines der folgenden Formate:
Metadata=
res://<assemblyFullName>/<resourceName>;
Metadata=
res://*/<resourceName>;
Metadata=res://*;
Der
resourceName
kann den Projektnamespace enthalten. Weitere Informationen finden Sie unter Verbindungszeichenfolgen (Entity Framework).
Siehe auch
Verweis
Weitere Ressourcen
Entity Data Model Tools
Isolieren der Leistung mit vorkompilierten/vorgenerierten Sichten im Entity Framework 4