Entity Framework Core и проблема отложенной загрузки - PullRequest
1 голос
/ 17 апреля 2020

У меня есть проект в Entity Framework Core 3.1. Когда я использую ленивую загрузку, как это:

services.AddDbContext<IQContext>(options => options.UseLazyLoadingProxies().UseSqlServer(...)

и я называю это:

 public async Task<Guid> UpdateAsync(object entity ...)
    {
...
      Type entityType = entity.GetType();
      string primaryKeyName = _dbContext.Model.FindEntityType(entityType).FindPrimaryKey().Properties.Select(x => x.Name).Single();

    }

Я получаю эту ошибку:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

Microsoft.EntityFrameworkCore.ModelExtensions.FindEntityType(...) returned null.

Но когда я удаляю UseLazyLoadingProxies(), все работает. Есть идеи, что может быть не так или как это исправить?

1 Ответ

0 голосов
/ 17 апреля 2020

Скорее всего, переданный object entity является экземпляром прокси, в этом случае GetType() не будет зарегистрированным типом сущности.

Рассмотрите возможность замены FindEntityType на FindRuntimeEntityType :

Получает объект, который отображает данный класс объектов, где класс может быть прокси, полученным из фактического типа объекта.

...