我在实体框架中有延迟加载的问题。我有一些成员,他们定期检查,所以以下(简化)模型:
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;
但这没有帮助。任何人都知道为什么这不起作用?
答案 0 :(得分:0)
不可能延迟加载复杂类型:
请注意,当加载保存complex type的实体实例时,EF始终会立即初始化complex object的属性值。 EF不支持复杂类型的延迟加载(如果您希望对实体的标量属性进行延迟加载,则也存在相同的限制)。当我们必须处理可能较大的值时(例如,地址复杂类型上的byte[]
类型的属性已被映射到Users表上的VARBINARY列并保存图像,这是不方便的。地址描述的位置。)。
答案 1 :(得分:-1)
您需要使用virtual
关键字进行延迟加载。在你的模型中:
class CheckIn {
public virtual Member member { get; set; }
}