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.