2012-06-30 53 views
2

如果我有一個像這樣的LINQ表達式來拉取用戶表和相關數據。該查詢給了我像預期的那樣人口稠密的對象圖:爲什麼EF在執行「from」時會丟失包含數據

var query = from u in Context.Users 
        .Include("EventRegistrations") 
        .Include("State") 
       select u; 

不過,如果我添加其他相關的導航屬性爲「從」,即使我沒有用它做任何事情,我只得到單我的結果中沒有包含數據的對象數據。

var query = from u in Context.Users 
        .Include("EventRegistrations") 
        .Include("State") 
       from ur in u.UserRoles 
       select u; 

這是爲什麼?我想在where子句中的上述表達式中使用「ur」,但它消除了我獲取包含的表數據的能力。

+0

正如感興趣,你也可以使用拉姆達點包括語法,所以它是編譯時安全,即'.INCLUDE(U =>ü。狀態)''你還需要'使用System.Data.Entity;'語句 –

+1

爲什麼你在u.UserRoles中添加'from'?你不需要在where子句中使用'UserRoles'。 – LukLed

+0

http://stackoverflow.com/questions/416847/join-and-include-in-entity-framework。我同意@ LukLed。我建議顯示你想要執行的完整查詢,可能有另一種解決方案,不需要第二個「from」。 – Slauma

回答

1

它可能是因爲你還沒有包括的UserRole

var query = from u in Context.Users 
       .Include("EventRegistrations") 
       .Include("State") 
       .Include("UserRoles") 
      from ur in u.UserRoles 
      select u; 
+0

我懷疑這是否解決了這個問題。爲什麼添加UserRoles的Include會突然導致EventRegistrations和State被加載? – Slauma

相關問題