Ich bin derzeit auf der Suche nach Möglichkeiten, ordnungsgemäß zu überprüfen, ob meine Entity Framework entweder hinzugefügt, geändert oder gelöscht wird. Unten ist meine Codierung:Überprüfen Entity Framework hinzugefügt, geändert oder gelöscht
int state = 0;
var added = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Added).ToList();
var modified = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Modified).ToList();
var deleted = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Deleted).ToList();
if (added.Count > 0)
state = 1;
if (modified.Count > 0)
state = 2;
if (deleted.Count > 0)
state = 3;
Momentan funktioniert es. Ich möchte nur wissen, ob es einen anderen richtigen Weg gibt, es zu tun.
Ganz ehrlich, ich habe noch nie die Notwendigkeit für eine solche Überprüfung gesehen. Wenn ich vermute, dass ich ausstehende Änderungen habe, mache ich eine SaveChanges() und gehe weiter. Ihre Frage macht mich neugierig, was Sie die Notwendigkeit sehen sehen. Können Sie das näher ausführen? Auch ich weiß, dass Ihr Code möglicherweise nicht die tatsächliche, sondern eine vereinfachte Version ist. Was wird jedoch passieren, wenn ein Eintrag geändert und ein anderer gelöscht wird? Der Status scheint in Ihrem Beispiel überschrieben zu sein. Ich nehme an, Sie haben eine ausgefeiltere Zustandsverfolgungsstruktur? –
@ Streamcap Hallo Streamcap. Eigentlich muss ich die Änderungen in meinem EF protokollieren und eine Bemerkung machen. Beispiel, wenn EF hinzugefügt wird, wäre die Bemerkung "Neu (etwas) erstellt", wenn geändert würde es "Aktualisieren (etwas)" sein. Im Moment würde es nur einen Eintrag geben, der sich gleichzeitig ändern kann. Denkst du, dass es richtig ist? Danke – Farid
@Farid Es gibt tatsächlich mehrere Möglichkeiten, dies zu tun. Eine Möglichkeit (obwohl grob) besteht darin, einen Trigger in die Datenbank zu setzen, der eine Protokollzeile beim Einfügen/Aktualisieren/Löschen schreibt. Eine andere Möglichkeit besteht darin, ein Protokollierungs-Framework zu verwenden, falls Sie eine detailliertere Erkennung der Änderungen benötigen. Ich würde Serilog vorschlagen, es ist kostenlos und ziemlich mächtig, ohne eine Tonne zusätzlicher Arbeit zu verlangen. –