2011-01-14 47 views
0

我只是試圖從使用ado.net實體框架的兩個sql server數據庫表中獲取數據。我的代碼是:試圖從sql數據庫使用實體框架目標.net 3.5網站遍歷表格

using (Model.Entities e = new Model.Entities()) 
    { 
     return e.PAGE.First().CONTROL; 
    } 

數據庫是設置有兩個表,通過該表(CONTROL_ID)在「ID」字段鏈接到頁面表控制表。每個PAGE對象有一個CONTROL對象。

我一直得到一個空值爲我的返回值,我知道這是不正確的。

我可以使用vis studio和breakpoints來查看'e'中有一個PAGE對象,我可以看到'e'中有多個CONTROL對象。這不是一個大型的數據庫,我只是在那裏有一些示例數據,以確保我得到這個工作 - 所以我知道應該有一個CONTROL對象連接到這個PAGE(我已經通過SQL Server驗證了這一點)。

我對通用代碼語法非常熟悉,我一直在使用LINQ幾年;然而,我沒有做任何與實體框架或ado.net 4.

似乎如果我只是拉個人表數據,然後它工作正常(ieePAGE.First()..或.. e.CONTROL.Where(x => x.someValue.Equals('someValue')),但如果我嘗試通過遍歷表來拉動,那麼我沒有得到任何回報(NULL)

希望一切都有意義。

回答

1

有些問題你:

  • 我以爲是頁面和控件之間的1..1,
  • 在PAGE上有一個叫做「ControlID」的FK嗎?
  • 您的EDMX中的「Page」實體上是否有稱爲「Control」的導航屬性?

如果回答所有的上面是,那麼這應該工作:

var page = e.Pages.Include("Control").First(); 

在這裏,你正在返回的第一「頁」記錄,預先加載相關控制。

產生的SQL應該是這樣的:

SELECT p.*, c.* 
FROM Page p 
INNER JOIN Control c 
on p.ControlId = c.ControlId 
+1

謝謝。正是我在找的! – Adam

相關問題