需要帮助尝试Eager在Entity Framework中加载一些数据

时间:2010-09-14 00:33:23

标签: linq entity-framework lambda expression predicate

我正在尝试在EF实体上进行一些急切的加载。

所以,如果实体被称为Orders ..那么我想我会做以下......

_someContext.Orders.Include("Whatever") ....

但问题是,我有一个类似以下的方法......

public IQueryable<Order> Find(Expression<Func<Order, bool>> predicate)
{
    return CurrentContext.Orders.Where(predicate);
}

效果很好..但是我可以利用Expression谓词在其中包含Include("whatever"),而不必添加其他方法参数吗?

1 个答案:

答案 0 :(得分:0)

我不这么认为。由于genlude中的谓词和ObjectQuery.Where Method与Include的急切加载无关。您可以创建一个扩展方法,但这不会使您无法使用另一个参数来指定include:

public IQueryable<Order> Find(Expression<Func> predicate, string include) {
    return CurrentContext.Orders.Where(predicate, include);
}

public static ObjectQuery<T> Where<T>(this ObjectQuery<T> entity, Expression<Func<T, bool>> predicate, string include) {
    return (ObjectQuery<T>)entity.Include(include).Where<T>(predicate);
}