Share via


Verfolgen von Änderungen in POCO-Entitäten (Entity Framework)

Es gibt zwei Möglichkeiten, Änderungen in POCO ("einfache alte" CLR-Objekte)-Entitäten nachzuverfolgen: durch ein Änderungsnachverfolgungs-Proxyobjekt oder durch eine Momentaufnahme.

Änderungsnachverfolgung mit Proxys

Wenn das Erstellen von Änderungsnachverfolgungs-Proxyobjekten für POCO-Entitäten aktiviert wird, werden Änderungen, die am Objektdiagramm vorgenommen werden, automatisch vom Entity Framework nachverfolgt. Weitere Informationen finden Sie unter Anforderungen für die Erstellung von POCO-Proxys (Entity Framework) und Identitätsauflösung, Zustandsverwaltung und Änderungsnachverfolgung (Entity Framework). Wenn die zusätzlichen Anforderungen in den POCO-Klassen nicht erfüllt werden können oder wenn diese Proxyobjekte nicht materialisiert werden sollen, können Sie die Proxyklassengenerierung deaktivieren. Weitere Informationen finden Sie unter Arbeiten mit POCO-Entitäten (Entity Framework).

Änderungsnachverfolgung mit einer Momentaufnahme

Wenn die Erstellung von Proxyobjekten deaktiviert wird, werden Änderungen, die am Objektdiagramm vorgenommen werden, nicht automatisch vom Entity Framework nachverfolgt, sobald sie auftreten. Sie müssen stattdessen Änderungen mithilfe der DetectChanges-Methode melden.

Wenn ein Objekt an den Kontext angefügt wird, wird eine Momentaufnahme von seinen Eigenschaftswerten erstellt. Wenn die DetectChanges-Methode aufgerufen wird, wird das angefügte Objektdiagramm mit dem ObjectStateManager synchronisiert. Weitere Informationen zum Anfügen von Objekten finden Sie unter Anfügen und Trennen von Objekten (Entity Framework). Die DetectChanges-Methode synchronisiert das Objektdiagramm mit dem Zustands-Manager, indem sie die folgenden Aktionen ausführt:

  1. Fügt neue Objekte im Diagramm an den Objektkontext an. Dies kann auftreten, wenn Sie ein Prinzipalobjekt abfragen und eine Zuordnung mit einem neuen abhängigen Objekt erstellen.

  2. Aktualisieren des Zustands von Objekten auf der Grundlage des Vergleichs der aktuellen Eigenschaftswerte mit der Momentaufnahme von den ursprünglichen Werten (wenn die Momentaufnahme bereits erstellt würde).

Weitere Informationen finden Sie unter Gewusst wie: Erkennen von Änderungen in POCO-Entitäten.

Dd456848.note(de-de,VS.100).gifHinweis:
Wenn eine POCO-Entität eine komplexe Typeigenschaft enthält, werden Änderungen an Membern der Instanz des komplexen Typs selbst dann mithilfe der Momentaufnahmemethode erkannt, wenn die Entität über einen Änderungsnachverfolgungsproxy verfügt.Wenn einer Eigenschaft jedoch eine neue Instanz des komplexen Typs zugewiesen wird, wird die Änderung der Eigenschaft auf die gleiche Weise wie andere Eigenschaften nachverfolgt.

Wenn die Objekte und ObjectStateManager nicht synchronisiert werden, können andere Vorgänge, die den ObjectStateManager verwenden, z. B. das Hinzufügen, das Anfügen oder das Löschen von Objekten, das Aufrufen der Refresh-Methode oder sogar Abfragen mit dem MergeOption-Wert PreserveChanges unvorhersehbare Ergebnisse haben.

Wegen der Bedeutung der Synchronisierung von ObjectStateManager mit Änderungen an den Werten angefügter POCO-Entitäten, ruft die SaveChanges-Methode standardmäßig zuerst die DetectChanges-Methode auf. Wenn Sie Änderungen am Diagramm vorgenommen haben und eine der folgenden Methoden vor dem Aufruf von SaveChanges verwenden möchten, empfiehlt es sich, DetectChanges aufzurufen:

Siehe auch

Konzepte

Arbeiten mit POCO-Entitäten (Entity Framework)