Freigeben über


Migrationsüberlegungen (Entity Framework)

ADO.NET Entity Framework bietet für eine vorhandene Anwendung mehrere Vorteile. Einer der wichtigsten dieser Vorteile ist die Möglichkeit, mithilfe eines konzeptionellen Modells von der Anwendung verwendete Datenstrukturen vom Schema in der Datenquelle zu trennen. Damit können Änderungen am Speichermodell oder an der Datenquelle selbst vorgenommen werden, ohne dass entsprechende Änderungen an der Anwendung notwendig werden. Weitere Informationen zu den Vorteilen von Entity Framework finden Sie unter Übersicht über Entity Framework und Entity Data Model.

Um von den Vorteilen von Entity Framework zu profitieren, können vorhandene Anwendungen zu Entity Framework migriert werden. Einige Aufgaben müssen für alle migrierten Anwendungen durchgeführt werden. Zu diesen allgemeinen Aufgaben gehören das Upgrade der Anwendung auf .NET Framework ab Version 3.5 Service Pack 1 (SP1), die Definition von Modellen und Zuordnungen sowie die Konfiguration von Entity Framework. Für das Migrieren einer Anwendung zu Entity Framework sind weitere Überlegungen erforderlich. Diese Überlegungen sind vom Typ der migrierten Anwendung sowie von deren spezifischer Funktion abhängig. In diesem Thema werden Informationen zur Auswahl der besten Methode zur Aktualisierung einer vorhandenen Anwendung bereitgestellt.

Allgemeine Überlegungen zur Migration

Folgende Aspekte sollten bei der Migration einer Anwendung zu Entity Framework beachtet werden:

  • Jede Anwendung, die .NET Framework ab Version 3.5 SP1 nutzt, kann zu Entity Framework migriert werden, solange der Datenanbieter der Datenquelle, die von der Anwendung verwendet wird, Entity Framework unterstützt.

  • Entity Framework unterstützt möglicherweise nicht alle Funktionen eines Datenquellenanbieters, auch wenn dieser Anbieter das Entity Framework unterstützt.

  • Bei einer großen oder komplexen Anwendung, ist es nicht erforderlich, die gesamte Anwendung gleichzeitig zu Entity Framework zu migrieren. Jedoch muss jede Komponente der Anwendung, die das Entity Framework nicht verwendet, geändert werden, wenn sich die Datenquelle ändert.

  • Die von Entity Framework verwendete Datenanbieterverbindung kann mit anderen Komponenten der Anwendung gemeinsam verwendet werden, da von Entity Framework für den Zugriff auf die Datenquelle ADO.NET-Datenanbieter verwendet werden. Beispielsweise wird der SqlClient-Anbieter vom Entity Framework für den Zugriff auf eine SQL Server-Datenbank verwendet. Weitere Informationen finden Sie unter EntityClient-Anbieter für das Entity Framework.

Allgemeine Migrationsaufgaben

Der Pfad zum Migrieren einer bestehenden Anwendung zu Entity Framework ist sowohl vom Typ der Anwendung als auch von der bestehenden Datenzugriffsstrategie abhängig. Sie müssen jedoch stets die folgenden Aufgaben ausführen, wenn Sie eine vorhandene Anwendung zu Entity Framework migrieren.

Hinweis

Diese Aufgaben erfolgen automatisch, wenn Sie die Entity Data Model-Tools beginnend mit Visual Studio 2008 verwenden. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Entity Data Model-Assistenten.

  1. Aktualisieren der Anwendung.

    Ein mit einer früheren Version von Visual Studio und .NET Framework erstelltes Projekt muss auf Visual Studio 2008 SP1 und .NET Framework ab Version 3.5 SP1 aktualisiert werden.

  2. Definieren der Modelle und Zuordnungen.

    Die Modell- und Zuordnungsdateien definieren Entitäten im konzeptionellen Modell, Strukturen in der Datenquelle, wie Tabellen, gespeicherte Prozeduren und Ansichten, und die Zuordnung zwischen den Entitäten und Datenquellenstrukturen. Weitere Informationen finden Sie unter Gewusst wie: Manuelles Definieren der Modell- und Zuordnungsdateien.

    Die im Speichermodell definierten Typen müssen mit dem Namen der Objekte in der Datenquelle übereinstimmen. Wenn die vorhandene Anwendung Daten als Objekte bereitstellt, müssen Sie sicherstellen, dass die Entitäten und Eigenschaften, die im konzeptionellen Modell definiert werden, mit den Namen der bestehenden Datenklassen und Eigenschaften übereinstimmen. Weitere Informationen finden Sie unter Gewusst wie: Anpassen von Modellierungs- und Zuordnungsdateien zur Verwendung mit benutzerdefinierten Objekten.

    Hinweis

    Der Entity Data Model-Designer wird verwendet, um Entitäten im konzeptionellen Modell umzubenennen, damit sie mit bestehenden Objekten übereinstimmen. Weitere Informationen finden Sie unter Entity Data Model-Designer.

  3. Definieren der Verbindungszeichenfolge.

    Beim Ausführen von Abfragen für ein konzeptionelles Modell verwendet Entity Framework eine speziell formatierte Verbindungszeichenfolge. Diese Verbindungszeichenfolge kapselt Informationen über die Modell- und Zuordnungsdateien und die Verbindung zur Datenquelle.

  4. Konfigurieren Sie das Visual Studio-Projekt.

    Dem Visual Studio-Projekt müssen Verweise auf Entity Framework-Assemblys und die Modell- und Zuordnungsdateien hinzugefügt werden. Sie können diese Mappingdateien dem Projekt hinzufügen, um zu gewährleisten, dass sie mit der Anwendung am in der Verbindungszeichenfolge angegebenen Speicherort bereitgestellt werden. Weitere Informationen finden Sie unter Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts.

Überlegungen für Anwendungen mit vorhandenen Objekten

Ab der .NET Framework-Version 4 unterstützt Entity Framework sog. POCO-Objekte (Plain Old CLR Objects), die Persistenz ignorieren. In den meisten Fällen können vorhandene Objekte bei nur geringfügigen Änderungen mit Entity Framework arbeiten. Weitere Informationen finden Sie unter Arbeiten mit POCO-Entitäten. Sie können auch eine Anwendung zu Entity Framework migrieren und die Datenklassen verwenden, die von den Entity Framework-Tools generiert werden. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Entity Data Model-Assistenten.

Überlegungen für Anwendungen, die ADO.NET-Anbieter verwenden

ADO.NET-Anbieter, z. B. SqlClient, ermöglichen das Abfragen einer Datenquelle, um Tabellendaten zurückzugeben. Daten können auch in ein ADO.NET-DataSet geladen werden. Die folgende Liste enthält Überlegungen zum Aktualisieren einer Anwendung, die einen vorhandenen ADO.NET-Anbieter verwendet:

  • Anzeigen von Tabellendaten mit einem Datenleser.

    Es empfiehlt sich, eine Entity SQL-Abfrage mithilfe des EntityClient-Anbieters auszuführen und das zurückgegebene EntityDataReader-Objekt aufzulisten. Dies ist nur erforderlich, wenn Ihre Anwendung Tabellen mithilfe eines Datenlesers anzeigt und nicht die von Entity Framework bereitgestellten Funktionen für die Materialisierung von Daten in Objekte, die Nachverfolgung von Änderungen und die Durchführung von Aktualisierungen benötigt. Sie können den vorhandenen Datenzugriffscode, der die Datenquelle aktualisiert, weiterhin verwenden. Sie können jedoch auch die vorhandene Verbindung verwenden, auf die über die StoreConnection-Eigenschaft der EntityConnection zugegriffen wird. Weitere Informationen finden Sie unter EntityClient-Anbieter für das Entity Framework.

  • Arbeiten mit DataSets.

    Entity Framework stellt viele der Funktionen bereit, die vom DataSet bereitgestellt werden, einschließlich In-Memory-Persistenz, Änderungsnachverfolgung, Datenbindung und Serialisierung von Objekten als XML-Daten. Weitere Informationen finden Sie unter Arbeiten mit Objekten.

    Wenn Entity Framework von Ihrer Anwendung benötigte Funktionalität von DataSet nicht bereitstellt, können Sie dennoch von den Vorteilen von LINQ-Abfragen profitieren, indem Sie LINQ to DataSet verwenden. Weitere Informationen finden Sie unter LINQ to DataSet.

Überlegungen für Anwendungen, die Daten an Steuerelemente binden

Mit .NET Framework können Daten in Datenquellen gekapselt werden, etwa als DataSet oder ASP.NET-Datenquellensteuerelement, und anschließend können Benutzeroberflächenelemente an diese Datensteuerelemente gebunden werden. Die folgende Liste enthält Überlegungen zu Bindungssteuerelementen für Entity Framework-Daten.

  • Binden von Daten an Steuerelemente.

    Wenn das konzeptionelle Modell abgefragt wird, gibt Entity Framework die Daten als Objekte zurück, die Instanzen von Entitätstypen sind. Diese Objekte können direkt an Steuerelemente gebunden werden, und diese Bindung unterstützt Aktualisierungen. Das bedeutet, dass Änderungen an Daten in einem Steuerelement, z. B. eine Zeile in DataGridView, automatisch in der Datenbank gespeichert werden, wenn die SaveChanges-Methode aufgerufen wird.

    Wenn Ihre Anwendung die Ergebnisse einer Abfrage auflistet, um Daten in einem DataGridView oder einem anderen die Datenbindung unterstützenden Steuerelement anzuzeigen, können Sie die Anwendung ändern, um das Steuerelement an das Ergebnis eines ObjectQuery<T> zu binden.

    Weitere Informationen finden Sie unter Binden von Objekten an Steuerelemente.

  • ASP.NET-Datenquellensteuerelemente.

    Entity Framework enthält ein Datenquellensteuerelement, das entworfen wurde, um die Datenbindung in ASP.NET-Webanwendungen zu vereinfachen. Weitere Informationen finden Sie unter Übersicht über das Webserversteuerelement EntityDataSource.

Weitere Überlegungen

Im Folgenden werden Überlegungen angestellt, die möglicherweise bei der Migration bestimmter Anwendungstypen zu Entity Framework von Bedeutung sind.

  • Anwendungen, die Datendienste verfügbar machen.

    Webdienste und Anwendungen, die auf Windows Communication Foundation (WCF) beruhen, machen Daten aus einer zugrunde liegenden Datenquelle verfügbar, indem sie ein XML-Nachrichtenformat für Anforderung/Antwort verwenden. Entity Framework unterstützt die Serialisierung von Entitätsobjekten mit binärer Serialisierung, XML-Serialisierung oder WCF-Datenvertragsserialisierung. Sowohl binäre als auch WCF-Serialisierung unterstützen die vollständige Serialisierung von Objektdiagrammen. Weitere Informationen finden Sie unter Erstellen n-schichtiger Anwendungen.

  • Anwendungen, die XML-Daten verwenden.

    Die Objektserialisierung ermöglicht die Erstellung von Entity Framework-Datendiensten. Diese Dienste stellen Daten für Anwendungen bereit, die XML-Daten verwenden, z. B. AJAX-basierte Internetanwendungen. Erwägen Sie in diesen Fällen die Verwendung von WCF Data Services. Diese Datendienste beruhen auf dem Entity Data Model und stellen einen dynamischen Zugriff auf Entitätsdaten bereit, indem sie Representational State Transfer (REST)-HTTP-Standardaktionen, z. B. GET, PUT und POST, verwenden. Weitere Informationen finden Sie unter WCF Data Services 4.5.

    Entity Framework unterstützt keinen nativen XML-Datentyp. Das bedeutet, dass beim Mapping einer Entität zu einer Tabelle mit einer XML-Spalte die entsprechende Entitätseigenschaft für die XML-Spalte eine Zeichenfolge ist. Objekte können getrennt und als XML serialisiert werden. Weitere Informationen finden Sie unter Serialisieren von Objekten.

    Wenn die Anwendung das Abfragen von XML-Daten erfordert, können Sie dennoch von den Vorteilen von LINQ-Abfragen profitieren, indem Sie LINQ to XML verwenden. Weitere Informationen finden Sie unter LINQ to XML (C#) oder LINQ to XML (Visual Basic).

  • Anwendungen, die den Zustand beibehalten.

    ASP.NET-Webanwendungen müssen häufig den Zustand einer Webseite oder einer Benutzersitzung beibehalten. Objekte in einer ObjectContext-Instanz, können im Clientansichts- oder Sitzungszustand auf dem Server gespeichert werden und später abgerufen und einem neuen Objektkontext erneut angefügt werden. Weitere Informationen finden Sie unter Anfügen und Trennen von Objekten.

Siehe auch