P.B*_*key 2 c# entity-framework-4
鉴于:
public SomeEntity Read(int primaryKey)
{
SomeEntity myEntity;
using (var context = new MyEntities2())
{
context.Configuration.LazyLoadingEnabled = false;//This line is wacky
myEntity = context.SomeEntities.SingleOrDefault(ct => ct.PrimaryKey == primaryKey);
if (myEntity == null)
return myEntity;
//Force eager Load...
var bypassDeferredExecution = myEntity.RelatedTable1.ToList();
var bypassDeferredExecution2 = myEntity.RelatedTable2.ToList();
}
return myEntity;
}
Run Code Online (Sandbox Code Playgroud)
如果我设置LazyLoadingEnabled = false然后myEntity.RelatedTable1.Count == 0.
保留默认值LazyLoadingEnabled = truemyEntity.RelatedTable1.Count == 2.
我的理解是,Lazy Loading和Eager Loading是极端的对立面.我迫不及待加载.无论我是否使用延迟加载,我希望我的相关表(交叉引用表)有2个结果.所以在我看来这些结果毫无意义.
为什么延迟加载会影响我的结果?
您必须使用Include以急切加载相关实体:
myEntity = context.SomeEntities
.Include("RelatedTable1")
.Include("RelatedTable2")
.SingleOrDefault(ct => ct.PrimaryKey == primaryKey);
Run Code Online (Sandbox Code Playgroud)
将Lazy Loading设置为false不会导致它自动发生.