Sobes.tech
Junior — Middle

Πώς καθορίζει το Entity Framework ότι μια συγκεκριμένη ιδιότητα ενός αντικειμένου έχει αλλάξει;

sobes.tech AI

Απάντηση από AI

Το Entity Framework παρακολουθεί τις αλλαγές στις ιδιότητες των αντικειμένων μέσω ενός μηχανισμού που ονομάζεται Change Tracking. Όταν ένα αντικείμενο φορτώνεται από τη βάση δεδομένων, η EF αποθηκεύει την αρχική του κατάσταση. Όταν καλείται η μέθοδος SaveChanges(), η EF συγκρίνει την τρέχουσα κατάσταση του αντικειμένου με την αποθηκευμένη αρχική κατάσταση. Αν η τιμή μιας ιδιότητας έχει αλλάξει, η EF την σηματοδοτεί ως τροποποιημένη και δημιουργεί το αντίστοιχο ερώτημα SQL για ενημέρωση.

Για τις κλάσεις που υλοποιούν το interface INotifyPropertyChanged, η EF μπορεί να παρακολουθεί τις αλλαγές αμέσως μόλις συμβούν. Διαφορετικά, η σύγκριση γίνεται κατά την αποθήκευση.

Παράδειγμα:

var user = context.Users.Find(1);
user.Name = "Νέο όνομα"; // Η EF θα σηματοδοτήσει την ιδιότητα Name ως τροποποιημένη
context.SaveChanges(); // θα ενημερώσει μόνο τα τροποποιημένα πεδία στη βάση