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(); // θα ενημερώσει μόνο τα τροποποιημένα πεδία στη βάση