.net核心-未加载模型虚拟属性

时间:2018-08-26 09:39:55

标签: c# entity-framework asp.net-core

在我的.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);

如果用户具有头像或没有头像,则Avatar属性返回null。

1 个答案:

答案 0 :(得分:3)

Entity Framework Core 2.0不支持虚拟导航属性的延迟加载。

它已在Entity Framework 2.1中添加。因此,您必须将应用程序升级到ASP.NET Core 2.1。

然后安装./get_iframe nuget软件包,并在Microsoft.EntityFrameworkCore.Proxies类的ConfigureServices()方法中进行如下配置。

Startup

以下是有关Entity Framework Core 2.1中的延迟加载的更多详细信息:

  1. What's new in Entity Framework 2.1
  2. Lazy Loading Documentation