我的实体中有子属性的子属性。我有一个Get方法:
List<T> Find(Expression<Func<T, bool>> where,
params Expression<Func<T, object>>[] toInclude);
我通常只加载第一个子属性的方法是这样做:
myManager.Find(x => x.Id == id, x.ChildB);
但是,我希望能够撤回ChildB属性,这是我的ChildB属性的子代。
无论如何使用我提供的方法签名执行此操作?我通常知道我可以做一个.Include(“ChildB.ChildC”)。
编辑:为每个请求添加代码
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 :(得分:0)
如果您正在讨论LINQ-to-SQL,那么您可以在对其执行任何查询之前配置DataContext。
类似的东西:
var options = new DataLoadOptions();
options.LoadWith<ChildB>(b => b.ChildC);
dataContext.LoadOptions = options;