Sobes.tech
Middle

Šta je praćenje u Entity Framework-u?

sobes.tech АИ

Одговор од АИ

Praćenje entiteta (Entity Tracking) je mehanizam u Entity Framework Core koji prati promene napravljene na objektima entiteta učitanim iz baze podataka. Kontekst čuva informacije o stanju svake učitane entitete i može generisati SQL upite za ažuriranje baze podataka prilikom čuvanja promena (DbContext.SaveChanges()).

Glavna stanja entiteta:

  • Added: Entitet je dodat u kontekst, ali još ne postoji u bazi podataka.
  • Unchanged: Entitet je učitan iz baze i njegove osobine nisu promenjene.
  • Modified: Neke osobine entiteta su promenjene od trenutka učitavanja iz baze.
  • Deleted: Entitet je označen za brisanje iz baze.
  • Detached: Entitet nije praćen od strane konteksta.

Podrazumevano, entiteti se prate pri radu sa LINQ upitima. Ovo omogućava Entity Framework-u da automatski odredi koje promene treba sačuvati.

Primer eksplicitnog označavanja praćenja:

// Praćeni upit
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Nepraćeni upit
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Isključivanje praćenja pomoću AsNoTracking() može poboljšati performanse pri izvršavanju upita, ako nije potrebno sačuvati promene u bazi podataka, jer EF ne troši resurse na praćenje stanja entiteta.