我試圖啓用惰性加載EF4上下文。延遲加載不適用於我inEntity Framework 4
正試圖加載數據的代碼是:
using (IUnitOfWork uw = new EFUnitOfWork())
{
foreach (Document doc in uw.Documents.All)
{
Console.WriteLine("Name: {0} Description: {1} Category: {2}", doc.Name, doc.Description, doc.DocumentCategory.Name);
}
}
我與庫和機組工作模式的嘗試,但據我瞭解,下面的命令應該工作。
ctx.ContextOptions.LazyLoadingEnabled = true;
我遇到的問題是當訪問doc.DocumentCategory.Name,我得到一個NullReferenceException。
爲什麼不是這個數據懶得加載?
如果我加載了DocumentCategories,則DocumentCategory屬性已解析。
我的文檔類的定義如下:
public class Document
{
public Document()
{
}
public Document(int id)
{
Id = id;
}
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual int DocumentCategoryId { get; set; }
public virtual bool Deleted { get; set; }
public DocumentCategory DocumentCategory { get; set; }
public override string ToString()
{
return Name;
}
}
Do * all *文檔有一個DocumentCategory?只是想知道LazyLoading確實嘗試爲給定的Document檢索DocumentCategory並且沒有找到,因此返回null並導致您的NullReferenceException。 – Smudge202
是的,DocumentCategoryId是數據庫中的一個不可爲空的字段,表之間存在一個外鍵。 –
導航屬性是否標記爲虛擬?你能告訴我們你的文檔類的定義嗎? – Dave