entity framework tutorial Überprüfen Sie, ob noch ausstehende Änderungen gespeichert werden




entity framework tutorial deutsch (3)

Beginnend mit EF 6 gibt es context.ChangeTracker.HasChanges() .

Gibt es eine Möglichkeit, im Entity Framework herauszufinden, ob in meinem Entitätskontext noch nicht gespeicherte Änderungen vorliegen?


Dies könnte funktionieren (wenn Sie mit Änderungen die hinzugefügten, entfernten und geänderten Entitäten meinen):

bool changesMade = (context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Count() +
                    context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted).Count() +
                    context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified).Count()
                    ) > 0;

Bearbeiten:

Verbesserter Code:

bool changesMade = context.
                   ObjectStateManager.
                   GetObjectStateEntries(EntityState.Added | 
                                         EntityState.Deleted | 
                                         EntityState.Modified
                                        ).Any();

Für diejenigen von Ihnen, die EF 4+ verwenden, ist hier eine äquivalente Lösung als eine Erweiterungsmethode:

public static class DbContextExtensions {
    public static Boolean HasPendingChanges(this DbContext context) {
        return context.ChangeTracker.Entries()
                      .Any(e => e.State == EntityState.Added
                             || e.State == EntityState.Deleted
                             || e.State == EntityState.Modified);
    }
}

Beachten Sie, dass Sie die Werte nicht als Bitmaske kombinieren können. Die Funktion GetObjectStateEntries() die Logik für Sie verarbeitet, aber LINQ wird keine korrekten Ergebnisse liefern.





entity-framework-6