0
我有一個對象的層次結構,看起來是這樣的:包括層次的實體框架查詢
public class Book
{
public virtual List<Page> Pages { get; set; }
public virtual List<Paragraph> Paragraphs { get; set; }
}
public class Page
{
public virtual List<Paragraph> Paragraphs { get; set; }
}
我想加載完整的對象層次和我去約,像這樣:
Book book = (from b in context.Books.Include("Pages").Include("Paragraphs")
.Include("Pages.Paragraphs") where CONDITION).SingleOrDefault();
我發現加載了book.Pages
和book.Paragraphs
,但book.Pages[i].Paragraphs
是null
。
檢查數據庫時,數據看起來正確(關聯列全部正確填充)。
我也嘗試了lamda語法,但是當參數是一個集合而不是實體時(例如,可以做這樣的事情:
.Include(s => s.Paragraphs.Select(p => p.Id == 1)
,但我沒有看到一個人如何可以使用LAMDA語法來指定Paragraphs
集合在book.Pages
各Page
應該被加載。
我錯過了什麼,或者這是實體框架的限制嗎?如果這是一個限制,我該如何解決它?
嗯,我想你的模型自己,並有更多的運氣:'book.Pages [I] .Paragraphs'我已經加入到它在前面跑的段落 –
怪我簡化了。我將重新創建我提出的確切問題,並從那裏向前移動,直到某些事情中斷爲止,謝謝您的關注 –
Tur在實際代碼中缺少'virtual'關鍵字。再次感謝幫助我找到問題! –