0

我正在從數據庫讀取數據到gridview的數據源。我的Table2可以是空的。當我嘗試綁定來自Table2的列時,向我提供了不包含該列的錯誤。我檢查了來自查詢的數據。有Table2但不是列。只是計數= 0.實體框架當表爲空時包含相關表

即使它是空的我怎麼能得到相關表的列?

return entities.Table1 
     .Include("Table2") 
     .Include("Table3 ") 
     .Include("Table2.Table4") 
     .Where(results => results.ID == anotherId) 
     .ToList(); 

Table1 one to many Table2 
Table3 one to many Table1 
Table4 one to many Table2 

回答

0

當您使用EF Table1,Table2等都是類。 Include(string)方法用於在一個查詢中緩存相關記錄。您可以刪除Include語句,並且您的查詢將以類似的方式工作。因此,如果您的數據庫中沒有Table1和Table2之間的任何實際記錄,則Table2屬性的count = 0。

將一些相關記錄添加到您的數據庫到Table1和Table2並再次執行您的查詢。表2不是DataSetDataTable,而是類。

我認爲事件.Include("Table2")是多餘的,如果你使用.Include("Table2.Table4")

通知書的,表2應該有FK到表1,如果你想一個一對多的關係。

EDITED

如果使用EF不必使用加入到收集幾個表中的數據。但是你必須有很好的FKs。您只需使用var collction = table1.Table2即可獲取與table1對象相關的所有Table2對象。

+0

表有外鍵。我想要顯示這些表格中的一些數據。當用戶輸入table1記錄的數據時,它將被保存到table2。表1具有定義,表2將具有這些定義的數據。 – TurKorsaN

+0

正如我以前寫的,請手動添加一些記錄到Table1和Table2並再次執行您的查詢。 – rraszewski

+0

哦,我在想桌子。現在我明白它是如何來自實體的。只是集合。我應該在ef中使用連接來獲得像sql連接查詢一樣的結果嗎? – TurKorsaN

相關問題