Sobes.tech
Middle

Was ist Tracking in Entity Framework?

sobes.tech KI

Antwort von AI

Das Tracking (Entity Tracking) ist ein Mechanismus in Entity Framework Core, der Änderungen an geladenen Entitätsobjekten aus der Datenbank überwacht. Der Kontext speichert Informationen über den Zustand jeder geladenen Entität und kann SQL-Abfragen generieren, um die Datenbank beim Speichern der Änderungen (DbContext.SaveChanges()) zu aktualisieren.

Hauptzustände der Entitäten:

  • Added: Die Entität wurde zum Kontext hinzugefügt, existiert aber noch nicht in der Datenbank.
  • Unchanged: Die Entität wurde aus der Datenbank geladen und ihre Eigenschaften wurden nicht geändert.
  • Modified: Einige Eigenschaften der Entität wurden seit dem Laden aus der Datenbank geändert.
  • Deleted: Die Entität wurde zum Löschen aus der Datenbank markiert.
  • Detached: Die Entität wird vom Kontext nicht verfolgt.

Standardmäßig werden Entitäten bei LINQ-Abfragen verfolgt. Dies ermöglicht es Entity Framework, automatisch zu bestimmen, welche Änderungen gespeichert werden müssen.

Beispiel für explizite Tracking-Anweisung:

// Verfolgte Abfrage
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Nicht-verfolgte Abfrage
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Das Deaktivieren des Trackings mit AsNoTracking() kann die Leistung bei Abfragen verbessern, wenn keine Änderungen in der Datenbank gespeichert werden müssen, da EF keine Ressourcen für die Verfolgung des Zustands der Entitäten aufwendet.