2017-02-26 95 views
0

我是實體框架的新手。我正在使用代碼第一選項。下面我有一個基本的模型。數據庫已正確創建並且記錄保持正確,但是當我運行測試方法(在模型後定義)時,我的標題記錄第二次加載正常,但是我的導航屬性Details並未重新加載。我究竟做錯了什麼?實體框架導航不加載的屬性

​​
+0

是** DetailId **主鍵嗎?如果是,是身份? –

+0

是的,通過代碼第一個約定,它自動被定義爲一個身份的PK。 – Jesse

回答

1

這裏實體框架使用Lazy-Loading。爲了獲得詳細信息,您應該使用Eager-Loading。您應該使用Include方法中的System.Data.Entity命名空間來完成Eager-Loading。更改您的查詢,如下所示。

 var hdr = (
       from header in ctx.Headers 
       where header.Name == NAME 
       select header).Include(h=>h.Details).FirstOrDefault(); 
+0

在我真實的情況下,我想使用延遲加載。我參考它時不應該加載詳細記錄嗎? – Jesse

+0

延遲加載只會加載您要求的內容。你要求標題,並且你得到了標題,如果你還想要明確要求明細的細節(使用包含)。 – master2080

+0

如果從未加載,則延遲加載的意義何在? – Jesse