C# .net core-未加载模型虚拟属性
在我的.NETCore2项目中,我有用户和文件模型,它们之间有关系。在模型和数据库中 用户模型: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;
[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));