Sobes.tech
Junior — Middle

Как Entity Framework определя, че конкретно свойство на обект е било променено?

sobes.tech AI

Отговор от AI

Entity Framework следи промените в свойствата на обектите чрез механизъм, наречен Change Tracking. Когато обект се зареди от базата данни, EF запазва неговото първоначално състояние. При извикване на метода SaveChanges(), EF сравнява текущото състояние на обекта с запазеното първоначално състояние. Ако стойността на свойство се е променила, EF го маркира като променено и генерира съответния SQL заявка за актуализация.

За класове, които реализират интерфейса INotifyPropertyChanged, EF може да следи промените веднага при тяхното възникване. В противен случай, сравняването става при запазване.

Пример:

var user = context.Users.Find(1);
user.Name = "Ново име"; // EF ще маркира свойството Name като променено
context.SaveChanges(); // ще актуализира само променените полета в базата