Sobes.tech
Middle

Τι είναι η παρακολούθηση στο Entity Framework;

sobes.tech AI

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

Η παρακολούθηση οντοτήτων (Entity Tracking) είναι ένας μηχανισμός στο Entity Framework Core που παρακολουθεί τις αλλαγές που γίνονται στα αντικείμενα οντοτήτων που φορτώνονται από τη βάση δεδομένων. Το πλαίσιο (Context) αποθηκεύει πληροφορίες σχετικά με την κατάσταση κάθε φορτωμένης οντότητας και μπορεί να δημιουργεί SQL ερωτήματα για την ενημέρωση της βάσης δεδομένων κατά την αποθήκευση των αλλαγών (DbContext.SaveChanges()).

Οι κύριες καταστάσεις των οντοτήτων:

  • Added: Η οντότητα έχει προστεθεί στο πλαίσιο, αλλά δεν υπάρχει ακόμα στη βάση δεδομένων.
  • Unchanged: Η οντότητα έχει φορτωθεί από τη βάση δεδομένων και οι ιδιότητές της δεν έχουν τροποποιηθεί.
  • Modified: Ορισμένες ιδιότητες της οντότητας έχουν τροποποιηθεί από τη φόρτωση από τη βάση δεδομένων.
  • Deleted: Η οντότητα έχει σημειωθεί για διαγραφή από τη βάση δεδομένων.
  • Detached: Η οντότητα δεν παρακολουθείται από το πλαίσιο.

Κατά τη χρήση ερωτημάτων LINQ, οι οντότητες παρακολουθούνται από προεπιλογή. Αυτό επιτρέπει στο Entity Framework να καθορίζει αυτόματα ποιες αλλαγές πρέπει να αποθηκευτούν.

Παράδειγμα ρητής δήλωσης παρακολούθησης:

// Παρακολούθηση ερωτήματος
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Μη παρακολουθούμενο ερώτημα
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Η απενεργοποίηση της παρακολούθησης με AsNoTracking() μπορεί να βελτιώσει την απόδοση κατά την εκτέλεση ερωτημάτων, εάν δεν χρειάζεται να αποθηκεύσετε αλλαγές στη βάση δεδομένων, καθώς το EF δεν καταναλώνει πόρους για την παρακολούθηση της κατάστασης των οντοτήτων.