Middle
Čo je sledovanie v Entity Framework?
sobes.tech AI
Odpoveď od AI
Sledovanie entít (Entity Tracking) je mechanizmus v Entity Framework Core, ktorý sleduje zmeny vykonané na načítaných objektoch entít z databázy. Kontext uchováva informácie o stave každej načítanej entity a môže generovať SQL dotazy na aktualizáciu databázy pri ukladaní zmien (DbContext.SaveChanges()).
Hlavné stavy entít:
- Added: Entita bola pridaná do kontextu, ale ešte neexistuje v databáze.
- Unchanged: Entita bola načítaná z databázy a jej vlastnosti neboli zmenené.
- Modified: Niektoré vlastnosti entity boli od načítania z databázy zmenené.
- Deleted: Entita bola označená na vymazanie z databázy.
- Detached: Entita nie je sledovaná kontextom.
Predvolene sú entity sledované pri práci s LINQ dotazmi. To umožňuje Entity Framework automaticky určiť, ktoré zmeny je potrebné uložiť.
Príklad explicitného označenia sledovania:
// Sledovaný dotaz
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);
// Nesledovaný dotaz
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);
Vypnutie sledovania pomocou AsNoTracking() môže zlepšiť výkon pri vykonávaní dotazov, ak nie je potrebné ukladať zmeny do databázy, pretože EF nespotrebováva zdroje na sledovanie stavu entít.