4

我在实体框架中遇到延迟加载问题。我有一些成员,他们定期签到,所以下面的(简化的)模型:

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;

它收集所有签到,但在任何地方,成员属性都是空的。我试过设置

db.Configuration.LazyLoadingEnabled= true;

但这没有帮助。任何人都知道为什么这不起作用?

4

2 回答 2

0

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

信息来源

于 2016-02-23T18:03:19.803 回答
-1

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

class CheckIn {
    public virtual Member member { get; set; }
}
于 2013-08-22T14:53:26.197 回答