2010-08-19 104 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