Freigeben über


Änderungsnachverfolgung und Identitätsauflösung (Entity Framework)

Eine ObjectQuery fügt dem vom ObjectStateManager verwalteten Objektcache neue, von der Abfrage zurückgegebene Objekte hinzu. Die Attach-Methode für ObjectContext und die Load-Methoden für EntityReference und EntityCollection fügen dem Objektcache ebenfalls Objekte hinzu. Für jeden Objektkontext ist ein ObjectStateManager vorhanden. In einem Objektkontext können Daten unabhängig von den Daten in der Datenquelle hinzugefügt, geändert und gelöscht werden. Wenn im Bereich eines einzelnen Objektkontexts mehrere Abfragen oder Ladevorgänge Objektauflistungen zurückgeben, die Duplikate enthalten, wird von Object Services nur eine Instanz eines Objekts mit einem spezifischen Entitätsschlüssel im Cache beibehalten. In der Standardeinstellung geben Abfragen nur Objekte zurück, die noch nicht im Cache vorhanden sind. Daher werden Änderungen an Objekten im Cache nicht überschrieben. Dieses Verhalten wird gesteuert, indem für Abfragen und Ladevorgänge ein MergeOption-Wert angegeben wird. Der Standardwert ist AppendOnly. Mit dieser Einstellung werden nur Objekte geladen, die noch nicht im Objektcache vorhanden sind, d. h. vorhandene Objekte werden nicht überschrieben. Um zu verhindern, dass Änderungen im Objektcache durch Aktualisierungen aus der Datenbank überschrieben werden, kann auch PreserveChanges angegeben werden. Diese Methode wird häufig verwendet, um Ausnahmen bzgl. vollständiger Parallelität aufzulösen und gleichzeitig Änderungen im lokalen Kontext beizubehalten. Weitere Informationen finden Sie unter Speichern von Änderungen und Verwalten von Parallelität (Entity Framework). Wenn OverwriteChanges angegeben wird, werden Objekte im Cache durch die neuesten Versionen von Objekten ersetzt, die aus der Datenbank materialisiert wurden. Dies gilt auch, wenn an diesen Objekten bereits Änderungen vorgenommen wurden.

Siehe auch

Weitere Ressourcen

Verwalten des Objektkontexts (Entity Framework)