【问题标题】:Need help trying to EagerLoad some data in EntityFramework需要帮助尝试在实体框架中加载一些数据
【发布时间】:2010-09-14 00:33:23
【问题描述】:

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

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

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

但问题是,我有如下方法...

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

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

【问题讨论】:

    标签: linq entity-framework lambda expression predicate


    【解决方案1】:

    我不这么认为。由于 genral 中的谓词和 ObjectQuery.Where Method 与 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);
    }
    

    【讨论】:

    • 是的 - 这是我几个小时前所做的......有点。我没有打扰扩展方法,而是继续往我的 Find(..) 方法中添加了另一个 string[] includeAssociations 参数。
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 2019-07-18
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多