Sobes.tech
Middle

Kas yra stebėjimas Entity Framework?

sobes.tech AI

Atsakymas iš AI

Entiteto sekimas (Entity Tracking) yra mechanizmas Entity Framework Core, kuris stebi pakeitimus, padarytus įkeltuose iš duomenų bazės entiteto objektuose. Kontekstas saugo informaciją apie kiekvieno įkelto objekto būseną ir gali generuoti SQL užklausas duomenų bazės atnaujinimui, kai išsaugomi pakeitimai (DbContext.SaveChanges()).

Pagrindinės entiteto būsenos:

  • Added: Entitetas pridėtas prie konteksto, bet dar neegzistuoja duomenų bazėje.
  • Unchanged: Entitetas įkeltas iš duomenų bazės ir jo savybės nepakitę.
  • Modified: Kai kurios entiteto savybės pakeistos nuo įkėlimo iš duomenų bazės.
  • Deleted: Entitetas pažymėtas ištrynimui iš duomenų bazės.
  • Detached: Entitetas nėra stebimas konteksto.

Pagal numatytuosius nustatymus, entitetai stebimi dirbant su LINQ užklausomis. Tai leidžia Entity Framework automatiškai nustatyti, kokie pakeitimai turi būti išsaugoti.

Pavyzdys aiškiai nurodyti stebėjimą:

// Stebimas užklausa
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Nesežymėta užklausa
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Išjungti stebėjimą naudojant AsNoTracking() gali pagerinti užklausų našumą, jei jums nereikia išsaugoti pakeitimų duomenų bazėje, nes EF nenaudoja išteklių entiteto būsenos stebėjimui.