Digamos, por ejemplo, que desea obtener una lista de todos sus clientes:
var customers = context.Customers.ToList();
Y supongamos que cada Customer
objeto tiene una referencia a su conjunto de Orders
, y que cada uno Order
tiene referencias a las LineItems
que también pueden hacer referencia a Product
.
Como puede ver, la selección de un objeto de nivel superior con muchas entidades relacionadas podría resultar en una consulta que necesita obtener datos de muchas fuentes. Como medida de rendimiento, le Include()
permite indicar qué entidades relacionadas deben leerse de la base de datos como parte de la misma consulta.
Usando el mismo ejemplo, esto podría traer todos los encabezados de orden relacionados, pero ninguno de los otros registros:
var customersWithOrderDetail = context.Customers.Include("Orders").ToList();
Como punto final, ya que solicitó SQL, la primera declaración sin Include()
podría generar una declaración simple:
SELECT * FROM Customers;
La declaración final que llama Include("Orders")
puede verse así:
SELECT *
FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;