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.