Serialisieren von Entitäten mit Selbstnachverfolgung

In einer ADO.NET Entity Framework-Anwendung ist ein Objektkontext für das Verfolgen von Änderungen in den Objekten zuständig. Ist es jedoch notwendig, Objekte in einer anderen Ebene zu bearbeiten, in der der Objektkontext nicht verfügbar ist, dann müssen Sie entscheiden, wie Änderungen nachzuverfolgen und diese Änderungen an den Objektkontext zurück zu melden sind. Ab Version 4 von Entity Framework können Entitäten mit Selbstnachverfolgung Ihnen helfen, Änderungen in jeder Ebene nachzuverfolgen. Eine Entität mit Selbstnachverfolgung ist eine Entität, die anhand einer Text Template Transformation Toolkit (Textvorlagentransformations-Toolkit, T4)-Vorlage erstellt wurde. Diese Vorlagen erstellen Entitätstypen, die über die Fähigkeit verfügen, Änderungen an skalaren, komplexen und Navigationseigenschaften aufzuzeichnen. Die Vorlage ADO.NET-Entitäts-Generator mit Selbstnachverfolgung ist in Visual Studio 2010 verfügbar. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Serialisieren von Entitäten mit Selbstnachverfolgung.

Sie können dieses Beispiel auf der Entity Framework Documentation Samples-Website in der MSDN Code Gallery herunterladen.

Szenario

In diesem Beispiel wird veranschaulicht, wie ein WCF-Dienst eine Reihe von Vorgängen verfügbar macht, die Entitätsdiagramme zurückgegeben. Anschließend wird das Diagramm von einer Clientanwendung bearbeitet. Die Änderungen werden an einen Dienstvorgang gesendet, der die Updates überprüft und mithilfe von Entity Framework in einer Datenbank speichert.

Erforderliche Komponenten

Stellen Sie vor dem Ausführen dieses Beispiels sicher, dass die folgende Software installiert ist:

  • Visual Studio 2010 mit .NET Framework 4

  • SQL Server 2005- oder 2008-Datenbankmodul

    • Beispieldatenbank "School" (im Beispiel enthalten)

    • SQL Server Management Studio (optional)

Erstellen des Beispiels

STESchoolModelExample besteht aus 5 Projekten:

  • Das Klassenbibliotheksprojekt STESchoolModel; dieses enthält das auf "School" beruhende Modell und die Vorlagen für Entitäten mit Selbstnachverfolgung. Letztere schließen die Vorlage für Entitätstypen mit Selbstnachverfolgung und die typisierte System.Data.Objects.ObjectContext-Vorlage ein.

  • Das Klassenbibliotheksprojekt STESchoolModelTypes, das mit der Vorlage für Entitätstypen mit Selbstnachverfolgung verknüpft ist, die sich im Projekt STESchoolModel befindet.

  • Die Windows Communication Foundation (WCF)-Dienstanwendung STESchoolModelService, die einen Satz von Vorgängen verfügbar macht, die Entitätsdiagramme zurückgeben und auf dem Client vorgenommene Änderungen in der Datenbank durchführen.

  • Die Clientanwendungen der STESchoolModelConsoleTest-Konsole.

  • Die Windows Presentation Foundation (WPF)-Clientanwendung STESchoolModelWPFTest.

Gehen Sie folgendermaßen vor, um das Beispiel zu erstellen.

So erstellen Sie die Anwendung "STESchoolModelExample"

  1. (Optional) Führen Sie das im Projekt enthaltene Skript "CreateSchool.sql" aus, wenn die Beispieldatenbank "School" nicht auf der SQL Server-Instanz vorhanden ist.

  2. Öffnen Sie in Visual Studio die Projektmappendatei.

  3. (Optional) Nach dem Erstellen der Datenbank "School" in einer Instanz von SQL Server, die nicht die Standardinstanz auf dem lokalen Computer ist, müssen Sie die richtige Instanz von SQL Server angeben, indem Sie in den Projekten STESchoolModelService, STESchoolModelConsoleTest, STESchoolModelWPFTest die Datenquelle in der Verbindungszeichenfolge ändern.

  4. Erstellen Sie die Projektmappe.

Ausführen des Beispiels

Gehen Sie folgendermaßen vor, um das Beispiel auszuführen.

So führen Sie die Clientanwendung aus

  1. Aktualisieren Sie den Dienstverweis in den Clientprojekten STESchoolModelWPFTest und STESchoolModelConsoleTest. Um den Verweis im Projektmappen-Explorer zu aktualisieren, klicken Sie mit der rechten Maustaste im Ordner Dienstverweise auf ServiceReference1, und wählen Sie Dienstverweis aktualisieren aus.

  2. Legen Sie STESchoolModelWPFTest oder STESchoolModelConsoleTest als Startprojekt fest.

  3. Führen Sie die Anwendung aus. Führen Sie den folgenden Schritt aus, wenn die Kommmunikation zwischen Client und dem Dienst, auf den verwiesen wird, fehlschlägt.

    1. Löschen Sie ServiceReference1 aus dem Clientprojekt.

    2. Fügen Sie den Dienstverweis erneut hinzu. Um im Projektmappen-Explorer einen Verweis auf den Dienst hinzuzufügen, klicken Sie mit der rechten Maustaste auf den Ordner Dienstverweise, und wählen Sie anschließend Dienstverweis hinzufügen aus.

    3. Konfigurieren Sie den Dienst. Da STESchoolModelService System.Collections.Generic.List zurückgibt, muss der Dienstverweis konfiguriert werden. Klicken Sie mit der rechten Maustaste auf den Dienstnamen (ServiceReference1), und wählen Sie anschließend Dienstverweis konfigurieren… aus. Wählen Sie im Dialogfeld Dienstverweis konfigurieren aus der Liste Auflistungstyp den Typ System.Collections.Generic.List aus.

    4. Führen Sie die Anwendung aus.

Entfernen des Beispiels

Gehen Sie folgendermaßen vor, um das Beispiel STESchoolModelExample zu entfernen.

So entfernen Sie die Anwendung "STESchoolModelExample"

  1. Löschen Sie das Projektverzeichnis und den Inhalt.

  2. (Optional) Löschen Sie die Datenbank "School" aus der SQL Server-Instanz.

Siehe auch

Weitere Ressourcen

ADO.NET Entity Framework
Entity Data Model
ADO.NET Entity Data Model-Tools
Binden von Objekten an Steuerelemente
Exemplarische Vorgehensweise: Serialisieren von Entitäten mit Selbstnachverfolgung