Sobes.tech
Middle

Mis on jälgimine Entity Frameworkis?

sobes.tech AI

Vastus AI-lt

Entiteedi jälgimine (Entity Tracking) on mehhanism Entity Framework Core'is, mis jälgib andmebaas laaditud entiteedivormide tehtud muudatusi. Kontekst salvestab teavet iga laaditud entiteedi staatuse kohta ning võib genereerida SQL-päringuid andmebaasi uuendamiseks, kui muudatused salvestatakse (DbContext.SaveChanges()).

Peamised entiteedi seisundid:

  • Added: Entiteet on lisatud konteksti, kuid veel ei eksisteeri andmebaasis.
  • Unchanged: Entiteet on laaditud andmebaasist ning selle omadused on muutmata.
  • Modified: Mõned entiteedi omadused on muutunud alates selle laadimisest andmebaasist.
  • Deleted: Entiteet on märgitud kustutamiseks andmebaasist.
  • Detached: Entiteet ei ole konteksti poolt jälgitud.

Vaikimisi jälgitakse entiteete LINQ-päringutega töötades. See võimaldab Entity Frameworkil automaatselt määrata, milliseid muudatusi tuleb salvestada.

Näide selgelt märgitud jälgimisest:

// Jälgitav päring
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Jälgimata päring
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Jälgimise keelamine AsNoTracking() abil võib parandada päringute jõudlust, kui teil ei ole vaja muudatusi andmebaasi salvestada, kuna EF ei kuluta ressursse entiteetide staatuse jälgimiseks.