实体框架;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;
但这无济于事。有人知道为什么这不起作用吗?
不可能延迟加载复杂类型:
请注意,当加载包含复杂对象的实体实例时,EF总是立即初始化复杂类型的属性值。EF不支持复杂类型的延迟加载(如果您想对实体的标量属性进行延迟加载,也存在同样的限制)。当我们必须处理潜在的大值时,这是不方便的(例如,Address复杂类型上类型为byte[]
的属性,该属性已映射到Users表上的VARBINARY列,并保存Address描述的位置的图像。)
信息源
您需要使用virtual
关键字进行延迟加载。在您的模型中:
class CheckIn {
public virtual Member member { get; set; }
}