0

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

4

1 回答 1

0

我不是要教你吸鸡蛋,但是你的ObjectContext.

即:在 ObjectContext 构造函数中

 this.ContextOptions.LazyLoadingEnabled = true;
于 2012-08-02T10:05:42.753 回答