Какво е проследяване в Entity Framework?
sobes.tech AI
Отговор от AI
Следенето на обекти (Entity Tracking) е механизъм в Entity Framework Core, който следи промените, направени върху обектите на същностите, заредени от базата данни. Контекстът съхранява информация за състоянието на всяка заредена същност и може да генерира SQL заявки за актуализиране на базата данни при запазване на промените (DbContext.SaveChanges()).
Основните състояния на същностите:
- Added: Същността е добавена към контекста, но все още не съществува в базата данни.
- Unchanged: Същността е заредена от базата данни и свойствата ѝ не са променени.
- Modified: Някои свойства на същността са променени от момента на зареждането ѝ от базата данни.
- Deleted: Същността е маркирана за изтриване от базата данни.
- Detached: Същността не се следи от контекста.
По подразбиране, същностите се следят при работа с LINQ заявки. Това позволява на Entity Framework автоматично да определя кои промени трябва да бъдат запазени.
Пример за явно указване на следене:
// Следена заявка
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);
// Неследена заявка
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);
Деактивирането на следенето с AsNoTracking() може да подобри производителността при изпълнение на заявки, ако не е необходимо да се запазват промени в базата данни, тъй като EF не изразходва ресурси за следене на състоянието на същностите.