Sobes.tech
Middle

Co je sledování v Entity Framework?

sobes.tech AI

Odpověď od AI

Sledování entit (Entity Tracking) je mechanismus v Entity Framework Core, který sleduje změny provedené na načtených objektech entit z databáze. Kontext uchovává informace o stavu každé načtené entity a může generovat SQL dotazy pro aktualizaci databáze při ukládání změn (DbContext.SaveChanges()).

Hlavní stavy entit:

  • Added: Entita byla přidána do kontextu, ale ještě neexistuje v databázi.
  • Unchanged: Entita byla načtena z databáze a její vlastnosti nebyly změněny.
  • Modified: Některé vlastnosti entity byly od načtení z databáze změněny.
  • Deleted: Entita byla označena k odstranění z databáze.
  • Detached: Entita není sledována kontextem.

Ve výchozím nastavení jsou entity sledovány při práci s LINQ dotazy. To umožňuje Entity Framework automaticky určit, které změny je třeba uložit.

Příklad explicitního označení sledování:

// Sledovaný dotaz
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Nesledovaný dotaz
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Vypnutí sledování pomocí AsNoTracking() může zlepšit výkon při provádění dotazů, pokud není potřeba ukládat změny do databáze, protože EF nevyužívá zdroje na sledování stavu entit.