代码之家  ›  专栏  ›  技术社区  ›  Pooria Sadeghy

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

  •  1
  • Pooria Sadeghy  · 技术社区  · 6 年前

    在我的.net Core2项目中,我有用户和文件模型,它们之间有关系。在模型和数据库中;

    用户型号:

    [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 回复  |  直到 6 年前
        1
  •  5
  •   TanvirArjel    6 年前

    实体框架核心2.0不支持虚拟导航属性的延迟加载。

    它已添加到实体框架2.1中。所以你必须把你的应用程序升级到ASP.NET核心2.1。

    然后安装 Microsoft.EntityFrameworkCore.Proxies ConfigureServices() 方法 Startup

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

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

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