我正在对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;