Sobes.tech
Middle

Какво е проследяване в 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 не изразходва ресурси за следене на състоянието на същностите.