Middle
Είναι η Include φορτωμένη άπληστα, τεμπέλικα ή ρητά;
sobes.tech AI
Απάντηση από AI
Include στο Entity Framework είναι ένας μηχανισμός Επιθετικής Φόρτωσης (Eager Loading).
Το Eager Loading σημαίνει ότι οι σχετικές οντότητες φορτώνονται από τη βάση δεδομένων μαζί με την ζητούμενη οντότητα σε μία ή περισσότερες ερωτήσεις κατά την πρώτη πρόσβαση στα δεδομένα.
Η χρήση του αποτρέπει το πρόβλημα των "N+1 ερωτήσεων", που μπορεί να προκύψει με την τεμπέλικη φόρτωση, όταν για την πρόσβαση σε κάθε σχετική οντότητα εκτελείται ξεχωριστή ερώτηση στη βάση δεδομένων.
Σύνταξη:
// Επιθετική φόρτωση παραγγελιών μαζί με πελάτες
var customersWithOrders = context.Customers.Include(c => c.Orders).ToList();
Σύγκριση με άλλους τύπους φόρτωσης:
| Τύπος φόρτωσης | Περιγραφή | Πότε να χρησιμοποιήσετε |
|---|---|---|
| Επιθετική (Include) | Φόρτωση σχετικών δεδομένων μαζί με τα κύρια σε ένα ή περισσότερα ερωτήματα. | Όταν τα σχετικά δεδομένα σχεδόν πάντα χρειάζονται. |
| Τεμπέλικη | Φόρτωση σχετικών δεδομένων μόνο κατά την πρώτη πρόσβαση σε αυτά. | Όταν τα σχετικά δεδομένα δεν είναι πάντα απαραίτητα. |
| Ραβδί (Explicit) | Χειροκίνητη φόρτωση σχετικών δεδομένων μετά την απόκτηση της κύριας οντότητας. | Όταν τα σχετικά δεδομένα χρειάζονται σε καθορισμένη στιγμή μετά τη φόρτωση της κύριας οντότητας. |