Angenommen, Sie möchten eine Liste aller Ihrer Kunden erhalten:
var customers = context.Customers.ToList();
Nehmen wir an, dass jedes Customer
Objekt einen Verweis auf seine Menge von Orders
hat und dass jedes Order
Verweise Verweise hat, auf LineItems
die auch a verweisen kann Product
.
Wie Sie sehen können, kann die Auswahl eines Objekts der obersten Ebene mit vielen verwandten Entitäten zu einer Abfrage führen, bei der Daten aus vielen Quellen abgerufen werden müssen. Mit dieser Option Include()
können Sie als Leistungsmaß angeben, welche verwandten Entitäten als Teil derselben Abfrage aus der Datenbank gelesen werden sollen.
Wenn Sie dasselbe Beispiel verwenden, werden möglicherweise alle zugehörigen Auftragskopfzeilen eingefügt, jedoch keiner der anderen Datensätze:
var customersWithOrderDetail = context.Customers.Include("Orders").ToList();
Als letzter Punkt, seit Sie nach SQL gefragt haben, könnte die erste Anweisung ohne Include()
eine einfache Anweisung generieren:
SELECT * FROM Customers;
Die letzte Anweisung, die aufgerufen wird, Include("Orders")
könnte folgendermaßen aussehen:
SELECT *
FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;