2010-08-19 51 views
1

我下面舉個例子:如何包括物業

using (MyContext context = new MyContext()) 
{ 
    var query = from entityA in context.EntityA.Include("TestProperty") 
       join entityB in context.EntityB on entityA.Id equals entityB.EntityAId 
       join entityC in context.EntityC on entityB.Id equals entityC.EntityBId 
       where entityC.Id == id 
       select entityA; 

    List<EntityA> toReturn = query.ToList(); 

    return toReturn; 
} 

我的加入都工作正常,但是,我的「TestProperty」導航屬性加載不正確。我看,在運行時,它是空的。

當我做到以下幾點:

context.LoadProperty(toReturn, "TestProperty"); 

它正確地加載 'TestProperty' 屬性。在我的LINQ-to-SQL語句中是否有錯誤?

更新: 我改的第一行是:

from entityA in context.EntityA.Include("TestProperty").ToList() 

地拋在下面的線相同的其餘部分,它正確地裝入我的財產。這是解決問題的恰當方法嗎?

+0

這看起來像一個LINQ到實體問題,而不是LINQ到SQL。如果你編輯並重新標記你的問題,你可能會有更多的運氣。 :) – Peter 2010-08-20 20:29:48

回答

1

「這是解決問題的恰當方法嗎?」這是最糟糕的解決方案,因爲您現在正在執行整個查詢客戶端。

-1

包括必須寫加盟後& where子句

檢查:

var query = ((from entityA in context.EntityA 
       join entityB in context.EntityB on entityA.Id equals entityB.EntityAId 
       join entityC in context.EntityC on entityB.Id equals entityC.EntityBId 
       where entityC.Id == id 
       select entityA) as objectQuery<EntityA>).Include("TestProperty") 
+0

包含不適用於預測 – BrokenGlass 2011-11-13 23:48:46