我正在针对 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 中的一个错误,但我推迟宣布这一点并将整个热气腾腾的堆扔掉窗口)?如果第二个工作正常,那么配置肯定没问题...?