Sobes.tech
Junior — Middle

Ako určuje Entity Framework, že bola zmenená konkrétna vlastnosť objektu?

sobes.tech AI

Odpoveď od AI

Entity Framework sleduje zmeny vlastností objektov pomocou mechanizmu nazývaného Change Tracking. Keď sa objekt načíta z databázy, EF uloží jeho počiatočný stav. Pri volaní metódy SaveChanges() EF porovná aktuálny stav objektu s uloženým počiatočným stavom. Ak sa hodnota vlastnosti zmenila, EF ju označí ako zmenenú a vygeneruje príslušný SQL dotaz na aktualizáciu.

Pre triedy, ktoré implementujú rozhranie INotifyPropertyChanged, môže EF sledovať zmeny ihneď po ich vzniku. Inak sa porovnanie vykonáva pri ukladaní.

Príklad:

var user = context.Users.Find(1);
user.Name = "Nové meno"; // EF označí vlastnosť Name ako zmenenú
context.SaveChanges(); // aktualizuje iba zmenené polia v databáze