【发布时间】:2012-05-25 13:16:57
【问题描述】:
LazyLoadingEnabled 专门设置为 true 以防止相关实体在我正在使用的上下文中加载。
一个药物类别中包含一个药物身份对象列表。
public class Drug
{
public virtual List<DrugIdentity> DrugIdentities { get; set; }
}
如果我想包含要加载的相关实体,则该类的特定配置会设置 key 和 hasmany 关系。
public DrugConfiguration()
{
this.HasKey(d => d.DrugID);
this.HasMany(d => d.DrugIdentities).WithOptional(d => d.Drug).Map(d => d.MapKey("DrugID"));
}
当使用 linq 查询加载 Drug 上下文时,对象显示它包含相关的 DrugIdentities,而实际上它不应该包含相关的 DrugIdentities。
context.Configuration.LazyLoadingEnabled = true;
var drugs = from d in context.Drug
where d.Active == true
select d;
drugs[0].DrugIdentities Count = 1
我希望 drug[0].DrugIdentities 等于 NULL,因为延迟加载设置为 true?
【问题讨论】:
-
您似乎将延迟加载误认为与实际情况相反。延迟加载意味着当您访问导航属性时,您的数据会自动加载。与此相反,急切加载是当您为关系属性获取空值时,除非您明确(急切地)加载它们。