Entity Framework Core 2.1 ошибочно загружает некоторые свойства навигации, но не другие - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь решить проблему n + 1 с моим проектом Entity Framework Core 2.1, обеспечив загрузку только моих моделей.

Проблема, с которой я столкнулся, заключается в том, что некоторые связанные модели загружаются лениво, а другие нет.И чтобы быть ясным, я не хочу загружать что-либо ленивое вообще, и я не включил это явно.Я не верю, что это ожидаемое поведение.

Например, когда я запускаю этот код следующего кода, он возвращает все включенные данные, как и ожидалось.

List<User> users = _context.Users
    .Include(u => u.Engine)
    .Include(u => u.ClientType)
    .Include(u => u.Organization)
    .Include(u => u.Role)
    .ToList();

Однако, если я удаляю все включения, около 90%пользователей в списке все еще будут иметь связанные данные.Я полагаю, что именно поэтому у меня возникает проблема n + 1, несмотря на то, что я активно загружаюсь.

Почему загружаются только некоторые из связанных моделей?Почему что-то загружается, если я его не включил?Может ли это быть основной причиной моей проблемы n + 1, несмотря на мои попытки использовать только энергичную загрузку?

1 Ответ

0 голосов
/ 03 октября 2018

EF Core не поддерживает отложенную загрузку по умолчанию.Вы должны явно включить его, а затем пометить свои свойства навигации как virtual.Если вам не нужна отложенная загрузка, убедитесь, что ваш метод OnConfiguring не вызывает UseLazyLoadingProxies()

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
    // .UseLazyLoadingProxies() <- Only use this to enable lazy loading.
    .UseSqlServer(myConnectionString);
...