Sobes.tech
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.