Ответ
Include и ThenInclude — это методы в Entity Framework Core для жадной загрузки связанных данных (Eager Loading). Их основное различие — в уровне вложенности навигационных свойств, которые они загружают.
Includeзагружает навигационное свойство первого уровня, непосредственно связанное с основным запрашиваемым объектом.ThenIncludeиспользуется для загрузки вложенных (цепочных) свойств — то есть свойств объекта, который был загружен с помощью предыдущегоIncludeилиThenInclude.
Практический пример:
// Загружаем Customers, их заказы (Orders) и детали каждого заказа (OrderDetails)
var customersWithOrders = context.Customers
.Include(c => c.Orders) // Первый уровень: заказы клиента
.ThenInclude(o => o.OrderDetails) // Второй уровень: детали заказа
.ToList();
Ключевые правила:
Includeможно использовать самостоятельно.ThenIncludeобязательно должен следовать послеIncludeили другогоThenInclude.- Порядок вызовов определяет путь загрузки: от корневого объекта к вложенным.
- Без
ThenIncludeв примере выше коллекцияOrderDetailsв каждом заказе осталась быnullили пустой (если не включена ленивая загрузка).