Digamos, por exemplo, que você deseja obter uma lista de todos os seus clientes:
var customers = context.Customers.ToList();
E vamos supor que cada Customer
objeto tenha uma referência ao seu conjunto de Orders
, e que cada um Order
tenha referências às LineItems
quais também podem fazer referência a a Product
.
Como você pode ver, selecionar um objeto de nível superior com muitas entidades relacionadas pode resultar em uma consulta que precisa obter dados de várias fontes. Como medida de desempenho, Include()
permite que você indique quais entidades relacionadas devem ser lidas do banco de dados como parte da mesma consulta.
Usando o mesmo exemplo, isso pode trazer todos os cabeçalhos de pedidos relacionados, mas nenhum dos outros registros:
var customersWithOrderDetail = context.Customers.Include("Orders").ToList();
Como ponto final, já que você solicitou o SQL, a primeira instrução sem Include()
poderia gerar uma instrução simples:
SELECT * FROM Customers;
A declaração final que chama Include("Orders")
pode ser assim:
SELECT *
FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;