实体框架-懒惰加载失败但渴望加载良好-如何修复/调试



我正在对sql server 2012数据库使用实体框架4.3.1,我有一个包含这些表的数据库(还有更多,但相关的位在下面):

Customer
    CustomerNumber nvarchar(10) not null primary key
SalesDocument
    SalesDocumentNumber nvarchar(10) not null primary key
    CustomerNumber nvarchar(10) not null

我正在运行以下代码片段:

const string docNumber = "111348718";
IQueryable<SalesDocument> docs = factory.CreateSalesDocumentRepository().All;
var ssd = docs.Single(s => s.SalesDocumentNumber.Equals(docNumber));
if (ssd.Customer == null)
    Console.WriteLine("NOOOOOOO");
ssd = docs
    .Include(s => s.Customer)
    .Single(s => s.SalesDocumentNumber.Equals(docNumber));
if (ssd.Customer == null)
    Console.WriteLine("YESSSSSS");

并且我只打印了NOOOOOOO。

因此,懒惰加载似乎不起作用,但渴望加载起作用。

在这种情况下,我到底该如何调试出了什么问题(可能导致失败的原因是什么——对我来说,这就像是EF中的一个错误,但我推迟了宣布,并将整个蒸汽堆扔出了窗外)?如果第二个工作正常,配置肯定可以。。。?

我不是想教你吸鸡蛋,但你在ObjectContext中启用了LazyLoading吗?

即:在ObjectContext构造函数中

 this.ContextOptions.LazyLoadingEnabled = true;

最新更新