Freigeben über


Migrationsaspekte (Entity Framework)

Das ADO.NET Entity Framework bietet für eine vorhandene Anwendung mehrere Vorteile. Einer der wichtigsten dieser Vorteile ist die Möglichkeit, mithilfe des Entitätsdatenmodell (EDM) 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 über die Vorteile der Verwendung des Entity Framework finden Sie unter Einführung in Entity Framework.

Um von den Vorteilen des 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 gemeinsamen Aufgaben gehören das Aktualisieren der Anwendung zur Verwendung von .NET Framework Version 3.5 Service Pack 1 (SP1), die Definition des EDM und die Konfiguration des Entity Framework. Beim Migrieren einer Anwendung zum 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 zum Entity Framework beachtet werden:

  • Jede Anwendung, die das .NET Framework 3.5 verwendet, kann zu Entity Framework migriert werden, so lange der Datenanbieter für die Datenquelle, die bei 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 Entity Framework ADO.NET-Datenanbieter für den Zugriff auf die Datenquelle verwendet. 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 immer die folgenden Aufgaben ausführen, wenn Sie eine vorhandene Anwendung zum Entity Framework migrieren.

NoteHinweis

Diese Aufgaben werden automatisch ausgeführt, wenn Sie die Entity Data Model-Tools mit Visual Studio 2008 verwenden. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Assistenten für Entity Data Model (Entity Framework).

  1. Aktualisieren der Anwendung.

    Ein Projekt, das unter Verwendung einer früheren Version von Visual Studio und dem .NET Framework erstellt wurde, muss aktualisiert werden, damit Visual Studio 2008 SP1 und .NET Framework 3.5 SP1 angewendet werden können. Weitere Informationen finden Sie unter Visual Studio-Konvertierungs-Assistent.

  2. Definieren des Entitätsdatenmodell (EDM).

    Das EDM definiert Entitäten im konzeptionellen Modell, Strukturen in der Datenquelle, wie Tabellen, gespeicherte Prozeduren und Sichten, und das Mapping zwischen den Entitäten und Datenquellenstrukturen. Weitere Informationen finden Sie unter Gewusst wie: Manuelles Definieren eines Entity Data Model (Entity Framework).

    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 eines Entity Data Model zur Verwendung von benutzerdefinierten Objekten (Entity Framework).

    NoteHinweis

    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 Übersicht über den ADO.NET Entity Data Model-Designer.

  3. Definieren der Verbindungszeichenfolge.

    Beim Ausführen von Abfragen eines EDM verwendet Entity Framework eine speziell formatierte Verbindungszeichenfolge. Diese Verbindungszeichenfolge kapselt Informationen über die EDM-Mappingdateien und die Verbindung zur Datenquelle. Weitere Informationen finden Sie unter Gewusst wie: Definieren der Verbindungszeichenfolge (Entity Framework).

  4. Konfigurieren des Visual Studio-Projekts.

    Dem Visual Studio-Projekt müssen Verweise auf Entity Framework-Assemblys und das EDM 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

Wenn eine Anwendung zu Entity Framework migriert wird, ist die Methode, mit der vorhandene Datenklassen migriert werden, von der Geschäftslogik, den benutzerdefinierten Methoden und der in diesen Klassen implementierten Eigenschaftsvalidierung abhängig. Sie sollten eine der folgenden Methoden zum Arbeiten mit vorhandenen Datenklassen auswählen.

  • Wenn Ihre Datenklassen nur Objekteigenschaften abrufen und festlegen, ersetzen Sie die vorhandenen Datenklassen durch Entitätstypen, die von den Entitätsdatenmodell-Tools generiert sind. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Assistenten für Entity Data Model (Entity Framework).

  • Falls Ihre Datenklassen benutzerdefinierten Validierungscode oder andere Geschäftslogik implementieren, migrieren Sie diese Logik in partielle Klassen, die mit Entitätsdatenmodell-Tools generiert wurden. Die Entitätsdatenmodell-Tools generieren Entitätstypen als partielle Klassen. So können Sie Methoden und Eigenschaften durch das Konvertieren der vorhandenen Klassen in partielle Klassen wiederverwenden. Hierbei müssen Sie jede Eigenschaft, die in der generierten Klasse doppelt besteht, aus der vorhandenen Anwendung entfernen. Weitere Informationen zum Erstellen von partiellen Klassen finden Sie unter Anpassen von Objekten (Entity Framework).

    Für jede Eigenschaft einer Datenklasse generieren die Entity Framework-Tools partielle Methoden mit den Namen OnPropertyNameChanging und OnPropertyNameChanged. Sie können den vorhandenen Eigenschaftsvalidierungscode in diese partiellen Methoden übertragen. Weitere Informationen finden Sie unter Gewusst wie: Ausführen von Geschäftslogik im Verlauf von Eigenschaftsänderungen (Entity Framework).

  • Falls Sie über eine große Menge von benutzerdefiniertem Code in Ihren vorhandenen Datenklassen verfügen oder die vorhandenen Datenklassen aus anderen Gründen beibehalten möchten, sollten Sie einen der folgenden Schritte ausführen:

    • Ändern Sie die Datenklassen, um von der EntityObject-Klasse oder der ComplexObject-Klasse zu erben. Alle generierten EDM-Typen erben von EntityObject oder ComplexObject. Mit Entity Framework können Sie durch Erben von diesen Basisklassen benutzerdefinierte Datenklassen verwenden. Dies ist die empfohlene Methode für die Verwendung benutzerdefinierter Datenklassen mit einem EDM. Weitere Informationen finden Sie unter Anpassen von Objekten (Entity Framework).

    • Ändern der Datenklassen zur Implementierung eines Satzes von Schnittstellen. Dies ist erforderlich, wenn die Datenklassen nicht von EntityObject oder ComplexObject erben können. Weitere Informationen zum Implementieren dieser Schnittstellen finden Sie unter Anpassen von Objekten (Entity Framework).

NoteHinweis

Wenn Sie vorhandene Datenklassen oder partielle Klassen mit einem EDM verwenden, müssen die Klassennamen mit den im konzeptionellen Modell definierten Entitätsnamen übereinstimmen. Verwenden Sie den Entity Designer, um Entitäten umzubenennen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen und Ändern von Entitätstypen.

Ü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 Object Services bereitgestellten Funktionen für die Materialisierung von Daten in Objekte, die Nachverfolgung von Änderungen und das Vornehmen 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.
    Im Entity Framework stellt Object Services viele der Funktionen bereit, die durch DataSet bereitgestellt werden, einschließlich dauerhafte Speicherung, Änderungsnachverfolgung, Datenbindung und das Serialisieren von Objekten als XML-Daten. Weitere Informationen finden Sie unter Übersicht über Object Services (Entity Framework).

    Wenn Object Services von Ihrer Anwendung benötigte Funktionen von DataSet nicht bereitstellt, können Sie dennoch von den Vorteilen von LINQ-Abfragen profitieren, indem Sie LINQ-to-DataSet verwenden. Weitere Informationen dazu 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-Datenquellenkontrolle, 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 EDM abgefragt wird, gibt Object Services 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 einem 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 zu binden.

    Weitere Informationen finden Sie unter Binden von Objekten an Steuerelemente (Entity Framework).

  • 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 Entity Framework-Datenquellensteuerelement.

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 Webdienste und das Entity Data Model (Anwendungsszenarios).
  • 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 ADO.NET Data Services. Diese Datendienste beruhen auf dem EDM und stellen einen dynamischen Zugriff auf Entitätsdaten bereit, indem sie die Representional State Transfer (REST) HTTP-Standardaktionen, wie GET, PUT und POST verwenden. Weitere Informationen finden Sie unter ADO.NET Data Services-Framework.

    Entity Framework unterstützt keinen systemeigenen 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 (Entity Framework).

    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 dazu finden Sie unter LINQ to XML.

  • 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 Clientansichtszustand oder im 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 von Objekten (Entity Framework).

Siehe auch

Konzepte

Überlegungen zur Bereitstellung (Entity Framework)
Entity Framework-Terminologie

Weitere Ressourcen

Entity Framework-Aufgaben