Допустим, вы хотите получить список всех своих клиентов:
var customers = context.Customers.ToList();
И давайте предположим, что каждый Customerобъект имеет ссылку на свой набор Orders, и что у каждого Orderесть ссылки, LineItemsкоторые также могут ссылаться на файл Product.
Как видите, выбор объекта верхнего уровня со многими связанными сущностями может привести к запросу, который должен получать данные из многих источников. В качестве показателя производительности Include()позволяет указать, какие связанные сущности должны быть прочитаны из базы данных в рамках одного запроса.
Используя тот же пример, это может привести к появлению всех связанных заголовков заказов, но ни одной из других записей:
var customersWithOrderDetail = context.Customers.Include("Orders").ToList();
В качестве последнего момента, поскольку вы запросили SQL, первый оператор без него Include()может сгенерировать простой оператор:
SELECT * FROM Customers;
Последний оператор, который вызывает вызовы, Include("Orders")может выглядеть так:
SELECT *
FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;