C# .net core-未加载模型虚拟属性

C# .net core-未加载模型虚拟属性,c#,entity-framework,asp.net-core,C#,Entity Framework,Asp.net Core,在我的.NETCore2项目中,我有用户和文件模型,它们之间有关系。在模型和数据库中 用户模型: [DefaultValue(null)] public int? AvatarId { get; set; } [ForeignKey("AvatarId")] public virtual File Avatar { get; set; } 文件模型: [InverseProperty("Avatar")] public ICollection<User> Users { get;

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

用户模型:

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

[InverseProperty("Avatar")]
public ICollection<User> Users { get; set; }
在这方面:

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

如果用户有化身或没有化身,则化身属性返回null。

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

它已添加到实体框架2.1中。因此,您必须将应用程序升级到ASP.NET Core 2.1

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

services.AddDbContext<YourDbContext>(
    b => b.UseLazyLoadingProxies()
          .UseSqlServer(YourConnectionString));
services.AddDbContext(
b=>b.UseLazyLoadingProxies()
.UseSqlServer(YourConnectionString));
以下是有关Entity Framework Core 2.1中延迟加载的更多详细信息:


  • 检查数据库,在
    User
    中是否有
    AvatarId
    的值?并确保
    AvatarId
    不为空。是的,我检查了所有东西是否存在任何可复制的项目?不,我定义了数据库、模型和上下文中的关系,记录有价值,但不处理由install EntityFrameworkCore.Proxies和add UseLazyLoadingProxies()解决的“TanvirArjel”问题。thanx我的朋友,非常感谢你的大力帮助
    services.AddDbContext<YourDbContext>(
        b => b.UseLazyLoadingProxies()
              .UseSqlServer(YourConnectionString));