【问题标题】:IQueryable Include not giving correct resultsIQueryable 包括没有给出正确的结果
【发布时间】:2013-07-26 20:53:37
【问题描述】:

我有一个通用存储库实现,它创建一个 IQueryable,如下所示:

    internal IEnumerable<T> Get(Expression<Func<T, bool>> filter = null,
                                Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null,
                                List<Expression<Func<T, object>>> includeProperties = null,
                                int? page = null,
                                int? pageSize = null)
    {
        IQueryable<T> query = m_dbSet;

        if (filter != null)
            query = query.Where(filter);

        if (orderBy != null)
            query = orderBy(query);

        if (page != null && pageSize != null)
            query = query.Skip((page.Value - 1) * pageSize.Value)
                         .Take(pageSize.Value);

        if (includeProperties != null)
            includeProperties.Aggregate(query, (current, include) => current.Include(include));

        return query.ToList();
   }

我遇到的问题是我传递给包含的表达式没有包含在查询的输出中。生成的 SQL 不包含 JOIN。

我在查询中没有其他参数。 Filter、orderBy、page 和 pageSize 都为空。包含列表包含单个表达式,并且表达式引用的成员声明为

   public virtual MyType m_Member { get; set; }

在存储库对象的 POCO 类中。

我已经读到 IQueryable 删除了 Select 或 Projection 上的 Include,但我相信我在这里也没有这样做。有谁知道这里发生了什么?

【问题讨论】:

    标签: c# entity-framework iqueryable


    【解决方案1】:

    你应该将聚合结果分配给query,我认为:

    query = includeProperties.Aggregate(query, ...);
    

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 2015-11-12
      • 2012-08-30
      相关资源
      最近更新 更多