Wie erhält man Delta für Entitätsänderungen in EF?

8

Ich brauche nur die Liste der geänderten Felder, der Datenspeicher ist ssce, also sind keine Trigger verfügbar

Gibt es Unterstützung in EF, um eine Liste zu erhalten oder eine generische Komponente zu erstellen?

    
Kumar 14.12.2011, 17:44
quelle

2 Antworten

7

Je nach Art des Kontexts und der generierten Entitäten können Sie dies auf verschiedene Arten tun. Im Falle von Objekten, die von Entity oder POCO geerbt wurden, können Sie ObjectStateManager Im Falle von Self-Tracking-Entitäten können Sie den Tracker von der Entität selbst verwenden.

Bitte geben Sie weitere Einzelheiten dazu an, wie Sie den Kontext generiert haben und wie Sie Änderungen vornehmen

BEARBEITET (2): Sie können ObjectStateManager für geänderte Einträge einfach wie folgt abfragen:

%Vor%

BEARBEITET (1):

Im folgenden Beispiel aus MSDN wird veranschaulicht, wie Änderungen abgefragt werden :

%Vor%     
vittore 14.12.2011, 17:47
quelle
2

Dies ist in der Regel eine gute Vorgehensweise, wenn Sie die Datenbankstruktur selbst verwenden. Dies ist nur ein weiterer Ansatz zu dem, den Sie jetzt haben.

Sie können ein neues Feld vom Typ datetime in einer Tabelle mit dem Namen ModifiedOn erstellen und jedes Mal aktualisieren, wenn Sie die Zeile in der Datenbank aktualisieren.

Wenn Sie die geänderten Zeilen nach einer bestimmten Zeit haben möchten, verwenden Sie einfach:

%Vor%

Es ist nur ein weiterer Vorschlag, wie Sie das Problem aus einem anderen Blickwinkel betrachten können.

    
TheBoyan 14.12.2011 19:25
quelle