Sobes.tech
Middle

Mi az a tracking az Entity Framework-ben?

sobes.tech MI

Válasz az MI-től

Az Entity Tracking (Entitáskövetés) az Entity Framework Core egyik mechanizmusa, amely nyomon követi a betöltött entitásobjektumokban végrehajtott változtatásokat az adatbázisból. A kontextus tárolja az egyes betöltött entitások állapotával kapcsolatos információkat, és SQL-lekérdezéseket generálhat az adatbázis frissítéséhez a változtatások mentésekor (DbContext.SaveChanges()).

Az entitások fő állapotai:

  • Added: Az entitás hozzá lett adva a kontextushoz, de még nem létezik az adatbázisban.
  • Unchanged: Az entitás az adatbázisból lett betöltve, és tulajdonságai nem változtak.
  • Modified: Néhány tulajdonság az entitásban megváltozott az adatbázisból való betöltése óta.
  • Deleted: Az entitás törlésre van jelölve az adatbázisból.
  • Detached: Az entitás nincs követve a kontextus által.

Alapértelmezés szerint a LINQ lekérdezésekkel dolgozó entitásokat követik. Ez lehetővé teszi az Entity Framework számára, hogy automatikusan meghatározza, mely változtatásokat kell menteni.

Példa az explicit követés megadására:

// Követett lekérdezés
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Nem követett lekérdezés
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

A követés kikapcsolása az AsNoTracking() segítségével javíthatja a lekérdezések teljesítményét, ha nincs szükség a változtatások mentésére az adatbázisban, mivel az EF nem fogyaszt erőforrásokat az entitások állapotának követésére.