.net core - виртуальное свойство модели не загружено - PullRequest
0 голосов
/ 26 августа 2018

В моем проекте .net core 2 у меня есть модель пользователя и файла, и у них есть отношения. В модели и в базе данных;

модель пользователя:

[DefaultValue(null)]
public int? AvatarId { get; set; }
[ForeignKey("AvatarId")]
public virtual File Avatar { get; set; }

модель файла:

[InverseProperty("Avatar")]
public ICollection<User> Users { get; set; }

Я получил моего пользователя с этим запросом

var user = this._db.User.Include(u => u.Avatar).FirstOrDefault(o => o.Id == id);

в контексте:

modelBuilder.Entity<User>()
            .HasOne<File>(u => u.Avatar)
            .WithMany(f => f.Users)
            .HasForeignKey(u => u.AvatarId);

Если у пользователя есть аватар или у него нет аватара, свойство аватара возвращает ноль.

1 Ответ

0 голосов
/ 26 августа 2018

Ленивая загрузка для свойства виртуальной навигации не поддерживается в Entity Framework Core 2.0.

Он был добавлен в Entity Framework 2.1. Поэтому вам необходимо обновить приложение до ASP.NET Core 2.1.

Затем установите пакет nuget Microsoft.EntityFrameworkCore.Proxies и настройте его следующим образом в методе ConfigureServices() класса Startup.

services.AddDbContext<YourDbContext>(
    b => b.UseLazyLoadingProxies()
          .UseSqlServer(YourConnectionString));

Вот более подробная информация о отложенной загрузке в Entity Framework Core 2.1:

  1. Что нового в Entity Framework 2.1
  2. Документация для отложенной загрузки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...