Sobes.tech
Middle

Was ist Change Tracking?

sobes.tech KI

Antwort von AI

Änderungsverfolgung ist ein Mechanismus in ORM (Object-Relational Mapper), wie Entity Framework, der den Zustand der Entitäten (Objekte), die im Datenkontext geladen wurden, verfolgt. Er bestimmt, welche Entitäten hinzugefügt, geändert oder gelöscht wurden, damit beim Speichern der Änderungen in der Datenbank die entsprechenden Befehle INSERT, UPDATE oder DELETE ausgeführt werden.

Zustände der Entitäten:

  • Added: Objekt wurde gerade erstellt und zum Kontext hinzugefügt, aber noch nicht in der Datenbank gespeichert.
  • Unchanged: Objekt wurde aus der Datenbank geladen oder gespeichert, ohne Änderungen.
  • Modified: Eines oder mehrere Eigenschaften des Objekts wurden nach dem Laden oder Speichern geändert.
  • Deleted: Objekt ist zum Löschen aus der Datenbank markiert.
  • Detached: Objekt wird vom Datenkontext nicht verfolgt.
// Beispiel für Änderungsverfolgung in Entity Framework Core
using (var context = new MyDbContext())
{
    // Entität laden
    var myEntity = context.MyEntities.Find(1);

    // Anfangszustand prüfen
    Console.WriteLine($"Anfangszustand: {context.Entry(myEntity).State}"); // Zeigt Unchanged

    // Eigenschaft ändern
    myEntity.MyProperty = "Neuer Wert";

    // Zustand nach Änderung prüfen
    Console.WriteLine($"Zustand nach Änderung: {context.Entry(myEntity).State}"); // Zeigt Modified

    // Neue Entität hinzufügen
    var newEntity = new MyEntity { MyProperty = "Eine weitere Neue" };
    context.MyEntities.Add(newEntity);

    // Zustand der neuen Entität prüfen
    Console.WriteLine($"Zustand der neuen Entität: {context.Entry(newEntity).State}"); // Zeigt Added

    // Entität zum Löschen markieren
    context.MyEntities.Remove(myEntity);

    // Zustand nach Löschung prüfen
    Console.WriteLine($"Zustand nach Löschung: {context.Entry(myEntity).State}"); // Zeigt Deleted

    // Änderungen in der Datenbank speichern
    context.SaveChanges();
}