DBContext Hinzugefügt / Attached Event?

7

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!

    
B Z 23.03.2011, 15:44
quelle

3 Antworten

11

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.

    
Ladislav Mrnka 23.03.2011, 19:00
quelle
19

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

zu übertragen %Vor%

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 ....

    
KVerwold 13.09.2011 21:52
quelle
4

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: Ссылка

    
Moho 18.06.2012 15:18
quelle