2010-08-19 99 views
0

我有一個兒童財產在我的實體中的兒童財產。我有一個獲取方法,例如:LINQ - 包括兒童財產兒童財產

List<T> Find(Expression<Func<T, bool>> where, 
      params Expression<Func<T, object>>[] toInclude); 

我通常加載只是第一個孩子屬性的方法是做到這一點:

myManager.Find(x => x.Id == id, x.ChildB); 

不過,我想能夠拉了回來ChildC財產,這是我的ChildB財產的孩子。

無論如何要用我提供的方法簽名來執行此操作嗎?我通常知道我可以做一個.Include(「ChildB.ChildC」)。

編輯:如果你是在談論LINQ到SQL每個請求

using(MyContext context = new MyContext()) 
{ 
    ObjectQuery<T> objectQuery = (ObjectQuery<T>)context.CreateObjectSet<T>(); 
    foreach(var include in toInclude) 
    { 
     objectQuery = objectQuery.Include(include); 
    } 

    return objectQuery.Where<T>(where); 
} 
+0

布蘭登 - 任何機會,你也可以包括在名單 find()方法存根的實現?鑑於此,我確信我可以在這個問題上做出體面的嘗試。謝謝... – 2010-08-19 14:31:22

+0

爲每個請求添加代碼。 – Brandon 2010-08-19 15:17:20

+0

ok -gotcha,會看看它,看看我能否'增加價值'.. – 2010-08-19 18:35:02

回答

0

添加的代碼,那麼你會反對它執行任何查詢之前配置的DataContext。

喜歡的東西:

var options = new DataLoadOptions(); 
options.LoadWith<ChildB>(b => b.ChildC); 
dataContext.LoadOptions = options; 
+0

我正在做LINQ到實體,但是,我希望開發人員可以通過他們想要的導航屬性列表包括而不必處理上下文。 – Brandon 2010-08-19 12:58:04