Ответ
Для использования Eager Loading в Entity Framework Core необходимо явно указать связанные сущности, которые нужно загрузить, с помощью метода Include(). Для загрузки цепочек связанных данных используется метод ThenInclude().
Ключевые моменты:
Include()— загружает связанные данные одного уровня.ThenInclude()— загружает данные по цепочке отношений (например, свойства связанной сущности).- Один запрос — Eager Loading выполняется одним SQL-запросом с использованием
JOIN, что эффективно, когда заранее известен полный набор необходимых данных. - Производительность — Позволяет избежать проблемы N+1 запроса, характерной для Lazy Loading.
Пример:
// Загружаем Orders, связанных с ними Customer, Address каждого Customer и коллекцию Items для каждого Order
var orders = context.Orders
.Include(o => o.Customer) // Eager Loading для Customer
.ThenInclude(c => c.Address) // Eager Loading для Address у Customer
.Include(o => o.Items) // Eager Loading для коллекции Items
.ToList();
Практический совет: Следите за формированием итогового SQL-запроса (например, через ToQueryString() или профилировщик). Слишком большое количество Include может привести к избыточному объему данных (cartesian explosion) и снижению производительности. В таких случаях рассмотрите разделение запроса или использование Explicit Loading.