Disons par exemple que vous souhaitez obtenir une liste de tous vos clients:
var customers = context.Customers.ToList();
Et supposons que chaque Customer
objet a une référence à son ensemble de Orders
, et que chacun Order
a des références LineItems
auxquelles peut également faire référence a Product
.
Comme vous pouvez le voir, la sélection d'un objet de niveau supérieur avec de nombreuses entités associées peut entraîner une requête qui doit extraire des données de nombreuses sources. En tant que mesure des performances, Include()
vous permet d'indiquer quelles entités associées doivent être lues à partir de la base de données dans le cadre de la même requête.
En utilisant le même exemple, cela peut amener tous les en-têtes de commande associés, mais aucun des autres enregistrements:
var customersWithOrderDetail = context.Customers.Include("Orders").ToList();
Enfin, depuis que vous avez demandé SQL, la première instruction sans Include()
pourrait générer une instruction simple:
SELECT * FROM Customers;
La déclaration finale qui appelle Include("Orders")
peut ressembler à ceci:
SELECT *
FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;