2011-03-31 53 views
0

所以我有兩個表,Table1和Table2。表1有一個整數,它是Table2標識列的外鍵,我將調用這個FK Table2ID。如果我執行此查詢:Linq to EF不選擇外鍵

var objs = (from t in DataContext.Table1 select t).Single(); 

objs.Table2.Table2ID爲空。不過,我可以用這樣的查詢很容易地選擇值:

var Table2ID = (from t in DataContext.Table1.Table2.Table2ID).Single(); 

如何選擇回FK的表1中使用的第一個查詢值,和爲什麼它不會自動復原?

回答

1

它看起來像延遲加載關閉出於某種原因,所以要儘量Include - 這應該工作:

var objs = (from t in DataContext.Table1.Include("Table2") select t).Single(); 

什麼EF版本是你的工作?這是第一個代碼還是數據庫?

此外,當您通過導航屬性訪問相關實體時,您不使用FK - 您應該能夠訪問objs.Table2.Id,只要IdTable2實體的主鍵。

編輯:

這聽起來像你沒有勾選,包括你的模型外鍵 - 一定要添加。如果右鍵單擊模型並選擇「從數據庫更新模型...」,您將看到以下對話框。

enter image description here

+0

數據庫首先被設計,我轉換到EF。如果我包含Table2,它會選擇所有的數據?我只需要表1中Fk的值。 – 2011-03-31 02:13:32

+0

@Payson:FK列是'Table1'實體的一部分 - 在你的例子中它應該可以作爲'objs.Table2Id'訪問 - 你只是想要FK還是相應的'Table2'實體? – BrokenGlass 2011-03-31 02:17:13

+0

@BrokenGlass很遺憾,我沒有選擇objs.Table2Id的選項,但是我有表中的其他所有列,並且通過objs.Table2.Table2Id指向FK的路徑。 – 2011-03-31 02:21:08