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.