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();
}