Sobes.tech
Middle

Ce este urmărirea în Entity Framework?

sobes.tech AI

Răspuns de la AI

Urmărirea entităților (Entity Tracking) este un mecanism în Entity Framework Core care monitorizează modificările aduse obiectelor de entitate încărcate din bază de date. Contextul stochează informații despre starea fiecărei entități încărcate și poate genera interogări SQL pentru actualizarea bazei de date la salvarea modificărilor (DbContext.SaveChanges()).

Stările principale ale entităților:

  • Added: Entitatea a fost adăugată în context, dar încă nu există în bază.
  • Unchanged: Entitatea a fost încărcată din bază și proprietățile sale nu au fost modificate.
  • Modified: Unele proprietăți ale entității au fost modificate de la încărcarea din bază.
  • Deleted: Entitatea a fost marcată pentru ștergere din bază.
  • Detached: Entitatea nu este urmărită de context.

În mod implicit, entitățile sunt urmărite la utilizarea interogărilor LINQ. Acest lucru permite Entity Framework să determine automat ce modificări trebuie salvate.

Exemplu de indicare explicită a urmăririi:

// Interogare urmărită
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Interogare ne urmărită
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Dezactivarea urmăririi cu AsNoTracking() poate îmbunătăți performanța la executarea interogărilor, dacă nu este nevoie să salvați modificări în bază, deoarece EF nu consumă resurse pentru urmărirea stării entităților.