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;
}
如果我設置LazyLoadingEnabled = false
然後myEntity.RelatedTable1.Count == 0。
保留默認LazyLoadingEnabled = true
然後myEntity.RelatedTable1.Count == 2
我的理解是,延遲加載和預先加載正好相反。我迫使急切的加載。我希望我的相關表(交叉引用表)有2個結果,不管我是否使用延遲加載。所以在我看來,這些結果毫無意義。
爲什麼延遲加載會影響我的結果?
如果只是執行查詢的時間問題,那麼爲什麼調用ToList()無法糾正問題? 'myEntity.RelatedTable1.ToList()'我期望LINQ to SQL將我的結果從0結果更新爲2結果。這種情況不會發生的原因目前還不清楚。 –
因爲當你將*延遲加載*設置爲'false'時,EF不會再發送任何查詢,除非你使用'Context'實例明確請求一個查詢。 – MarcinJuraszek