Sobes.tech
Middle

Wat is tracking in Entity Framework?

sobes.tech AI

Antwoord van AI

Entity Tracking is een mechanisme in Entity Framework Core dat de wijzigingen die in geladen entiteitsobjecten uit de database zijn aangebracht, bijhoudt. De context bewaart informatie over de status van elke geladen entiteit en kan SQL-query's genereren om de database bij te werken bij het opslaan van wijzigingen (DbContext.SaveChanges()).

Belangrijkste staten van entiteiten:

  • Added: De entiteit is aan de context toegevoegd, maar bestaat nog niet in de database.
  • Unchanged: De entiteit is uit de database geladen en haar eigenschappen zijn niet gewijzigd.
  • Modified: Sommige eigenschappen van de entiteit zijn sinds het laden uit de database gewijzigd.
  • Deleted: De entiteit is gemarkeerd voor verwijdering uit de database.
  • Detached: De entiteit wordt niet door de context gevolgd.

Standaard worden entiteiten gevolgd bij gebruik van LINQ-query's. Dit stelt Entity Framework in staat automatisch te bepalen welke wijzigingen moeten worden opgeslagen.

Voorbeeld van expliciete tracking-aanduiding:

// Volgde query
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Niet-volgde query
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Het uitschakelen van tracking met AsNoTracking() kan de prestaties verbeteren bij het uitvoeren van query's, als je geen wijzigingen hoeft op te slaan in de database, omdat EF geen middelen besteedt aan het volgen van de status van entiteiten.