实体框架;t惰性负载复杂类型

本文关键字:负载 复杂 类型 框架 实体 | 更新日期: 2023-09-27 18:28:42

我在实体框架中的Lazy Loading遇到问题。我有一些会员,他们定期报到,所以以下(简化)模型:

public class Member
{
    public int memberId { get; set; }
    public string name{ get; set; }
}
class CheckIn
{
    public int checkInId { get; set; }
    public virtual Member member { get; set; }
    public DateTime timestamp { get; set; }
}

以及在上下文中:

public DbSet<Member> leden { get; set; }
public DbSet<CheckIn> checkins { get; set; }

因此,我验证了数据库中是否填写了成员属性(它包含memberId)。

然而,当我尝试获取所有签入时:

IQueryable<CheckIn> Checkins = db.checkins;

它收集所有签入,但在任何地方,成员属性都为null。我试着设置

db.Configuration.LazyLoadingEnabled= true;

但这无济于事。有人知道为什么这不起作用吗?

实体框架;t惰性负载复杂类型

不可能延迟加载复杂类型:
请注意,当加载包含复杂对象的实体实例时,EF总是立即初始化复杂类型的属性值。EF不支持复杂类型的延迟加载(如果您想对实体的标量属性进行延迟加载,也存在同样的限制)。当我们必须处理潜在的大值时,这是不方便的(例如,Address复杂类型上类型为byte[]的属性,该属性已映射到Users表上的VARBINARY列,并保存Address描述的位置的图像。)

信息源

您需要使用virtual关键字进行延迟加载。在您的模型中:

class CheckIn {
    public virtual Member member { get; set; }
}