Teilen über


Arbeiten mit getrennten Entitäten

In einer Anwendung, die auf Entity Framework basiert, ist eine Kontextklasse für das Erfassen von Änderungen zuständig, die an nachverfolgten Entitäten vorgenommen werden. Durch Aufruf der SaveChanges-Methode werden vom Kontext nachverfolgte Änderungen in der Datenbank gespeichert. Bei der Arbeit mit n-schichtigen Anwendungen werden Entitätsobjekte normalerweise modifiziert, wenn keine Verbindung zum Kontext besteht. Sie müssen dann entscheiden, wie Änderungen nachverfolgt und an den Kontext zurückgemeldet werden. In diesem Artikel wird beschrieben, welche Möglichkeiten Sie haben, wenn Sie Entity Framework mit getrennten Entitäten verwenden.

Webdienstframeworks

Webdiensttechnologien unterstützen normalerweise Muster, mit denen Sie Änderungen an einzelnen getrennten Objekten übernehmen können. Mit der ASP.NET-Web-API können Sie z.B. Controlleraktionen (wie etwa Aufrufe an EF zum Übernehmen von Änderungen an Objekten in einer Datenbank) codieren. Mit den Tools der Web-API in Visual Studio können Sie leicht einen Web-API-Controller über das Entity Framework 6-Modell entwerfen. Weitere Informationen finden Sie unter Using Web API 2 with Entity Framework 6 (Verwenden der Web-API mit Entity Framework 6).

Es gab schon immer mehrere andere Webdiensttechnologien, die eine Integration in Entity Framework ermöglicht haben, wie z.B. WCF Data Services und RIA Services.

EF-APIs auf niedriger Ebene

Wenn Sie keine bereits vorhandene n-schichtige Lösung verwenden möchten oder wenn Sie Controlleraktionen in einem Web-API-Dienst anpassen möchten, stellt Entity Framework auch APIs bereit, mit denen Sie Änderungen übernehmen können, die an einer getrennten Schicht vorgenommen wurden. Weitere Informationen finden Sie im Artikel zum Hinzufügen, Anhängen und zu Entitätszuständen.

Entitäten mit Selbstnachverfolgung

Das Nachverfolgen von Änderungen an beliebigen Entitätsdiagrammen, die vom EF-Kontext getrennt sind, ist ein schwierig zu lösendes Problem. Eine Möglichkeit zur Lösung ist die Codegenerierungsvorlage für Entitäten mit Selbstnachverfolgung. Diese Vorlage generiert Entitätsklassen, die Logik zum Nachverfolgen von an getrennten Schichten vorgenommenen Änderungen als Zustände in den Entitäten selbst enthält. Außerdem werden mehrere Erweiterungsmethoden generiert, die diese Änderungen auf einen Kontext anwenden.

Diese Vorlage kann nur mit Modellen verwendet werden, die mit dem EF-Designer erstellt wurden, und nicht mit Code First-Modellen. Weitere Informationen finden Sie unter Self-Tracking Entities (Entitäten mit Selbstnachverfolgung).

Wichtig

Es wird nicht mehr empfohlen, die Vorlage für Entitäten mit Selbstnachverfolgung zu verwenden. Die Vorlage ist nur für die Unterstützung vorhandener Anwendungen weiterhin verfügbar. Wenn für Ihre Anwendung die Arbeit mit unverbundenen Diagrammen von Entitäten erforderlich ist, sollten Sie daher Alternativen erwägen, wie z.B. nachverfolgbare Entitäten. Diese Technologie ähnelt den Entitäten mit Selbstnachverfolgung und wird von der Community aktiver entwickelt. Alternativ dazu können Sie auch benutzerdefinierten Code mithilfe von APIs auf niedriger Ebene zur Änderungsnachverfolgung schreiben.