gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:25:18 26 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

关于c# - .net core - 模型虚拟属性未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52024996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com