EF Core 2.2 AsNoTracking + Include Выдает ошибку отложенной загрузки. Как исправить? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть что-то вроде этого

var result = dbContext.CompanyProducts.Include(x => x.Product).AsNotracking().Where(//some condtions).GroupBy(x => x.id).ToList()

var p = result.First().Product

, но я получаю

"Error generated for warning 'Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingWarning: 

An attempt was made to lazy-load navigation property 'Product' on detached entity of type 'CompanyProductProxy'. 

    Lazy-loading is not supported for detached entities or entities that are loaded with 'AsNoTracking()'.'. 
    This exception can be suppressed or logged by passing event ID 'CoreEventId.DetachedLazyLoadingWarning' to the 'ConfigureWarnings'
     method in 'DbContext.OnConfiguring' or 'AddDbContext'."}

Почему он думает, что загрузка ленивая, когда я использовал include?

1 Ответ

0 голосов
/ 06 ноября 2019

Ленивая загрузка не будет работать при использовании метода AsNoTracking.

У вас есть два варианта:

  1. Удалить AsNoTracking

  2. Игнорировать предупреждение и просто получить нулевое значение для ваших отношений

Вы можете настроить EF на игнорирование этой ошибки:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder
        .UseLazyLoadingProxies()
        .ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.DetachedLazyLoadingWarning));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...