EF 4.1 RC. Ich möchte Code ausführen, nachdem eine Entität dem DBContext hinzugefügt / angefügt wurde. Gibt es dafür eine Veranstaltung (ich kann keine finden). Im Grunde möchte ich überprüfen, ob die hinzugefügte / angefügte Entität von einer bestimmten Schnittstelle ist und wenn ja, mach ein paar Sachen damit. Danke!
Leider sind keine solchen Ereignisse verfügbar und es gibt keine Erweiterungspunkte, um solche Ereignisse hinzuzufügen. Das ist in meinen Augen einer der größten EF-Fehler. Die Erweiterbarkeit = Null.
Sie können nur SaveChanges
überschreiben und vor dem Ausführen von base.SaveChanges
use ChangeTracker
verwenden, um alle angehängten und hinzugefügten Entitäten Ihres Typs zu erhalten und Ihre Logik auszuführen. Es ist jedoch nicht das gleiche wie das Auslösen eines Ereignisses beim Anhängen oder Hinzufügen einer Entität zum Kontext.
Um Änderungen am Kontext zu verfolgen, können Sie das ObjectStateManagerChanged
-Ereignis von ObjectStateManager
verwenden. Um auf ObjectStateManager
zugreifen zu können, müssen Sie IObjectContextAdapter
verwenden, um den DbContext wie
Sobald Sie das Ereignis erhalten haben, wird es jedes Mal ausgelöst, wenn die Sammlung geändert wird, indem Sie Entitäten zu ObjectStateManager
hinzufügen oder entfernen.
Um den Status der Entität zu verfolgen, verwenden Sie GetObjectStateEntry()
von ObjectStateManager
und verwenden Sie Element
von CollectionChangeEventArgs
param.
Wenn Sie beide Zustände von CollectionChangeEventArgs
und ObjectStateEntry
kombinieren, können Sie verfolgen, was vor sich geht ....
Behandeln Sie das CollectionChanged-Ereignis für die Local-Eigenschaft des relevanten DbSet (ObservableCollection).
Überprüfen Sie den Status des hinzugefügten / angefügten Entitätsobjekts DbEntityEntry für hinzugefügt oder unmodified für hinzugefügt / angefügt, jeweils.
DbSet.Local-Eigenschaft: Ссылка
DbContext.Entry-Methode: Ссылка
Tags und Links entity-framework entity-framework-4.1 ef-code-first