Middle
Τι είναι η παρακολούθηση αλλαγών (change tracking);
sobes.tech AI
Απάντηση από AI
Ο παρακολούθηση αλλαγών είναι ένας μηχανισμός σε ORM (Object-Relational Mapper), όπως το Entity Framework, που παρακολουθεί την κατάσταση των οντοτήτων (αντικειμένων) που έχουν φορτωθεί στο πλαίσιο δεδομένων. Προσδιορίζει ποιες οντότητες έχουν προστεθεί, τροποποιηθεί ή διαγραφεί, ώστε κατά την αποθήκευση των αλλαγών στη βάση δεδομένων να εκτελούνται οι αντίστοιχες εντολές INSERT, UPDATE ή DELETE.
Καταστάσεις οντοτήτων:
- Added: Το αντικείμενο δημιουργήθηκε πρόσφατα και προστέθηκε στο πλαίσιο, αλλά δεν έχει αποθηκευτεί ακόμα στη βάση δεδομένων.
- Unchanged: Το αντικείμενο φορτώθηκε από τη βάση ή αποθηκεύτηκε, χωρίς αλλαγές.
- Modified: Ένα ή περισσότερα χαρακτηριστικά του αντικειμένου έχουν τροποποιηθεί μετά τη φόρτωση ή την αποθήκευση.
- Deleted: Το αντικείμενο έχει σημειωθεί για διαγραφή από τη βάση δεδομένων.
- Detached: Το αντικείμενο δεν παρακολουθείται από το πλαίσιο δεδομένων.
// Παράδειγμα παρακολούθησης αλλαγών στο Entity Framework Core
using (var context = new MyDbContext())
{
// Φόρτωση οντότητας
var myEntity = context.MyEntities.Find(1);
// Έλεγχος αρχικής κατάστασης
Console.WriteLine($"Αρχική κατάσταση: {context.Entry(myEntity).State}"); // Θα εμφανίσει Unchanged
// Τροποποίηση ιδιότητας
myEntity.MyProperty = "Νέα Τιμή";
// Έλεγχος κατάστασης μετά την τροποποίηση
Console.WriteLine($"Κατάσταση μετά την τροποποίηση: {context.Entry(myEntity).State}"); // Θα εμφανίσει Modified
// Προσθήκη νέας οντότητας
var newEntity = new MyEntity { MyProperty = "Άλλη Νέα" };
context.MyEntities.Add(newEntity);
// Έλεγχος κατάστασης της νέας οντότητας
Console.WriteLine($"Κατάσταση της νέας οντότητας: {context.Entry(newEntity).State}"); // Θα εμφανίσει Added
// Σημείωση για διαγραφή
context.MyEntities.Remove(myEntity);
// Έλεγχος κατάστασης μετά τη διαγραφή
Console.WriteLine($"Κατάσταση μετά τη διαγραφή: {context.Entry(myEntity).State}"); // Θα εμφανίσει Deleted
// Αποθήκευση αλλαγών στη βάση
context.SaveChanges();
}