IQueryable包括未给出正确结果

本文关键字:结果 包括未 IQueryable | 更新日期: 2023-09-27 18:25:10

我有一个通用的存储库实现,它创建了一个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();
   }

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

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

   public virtual MyType m_Member { get; set; }

在Repository对象的POCO类中。

我读过IQueryable在Select或Projection上删除Include,但我相信我在这里都没有这样做。有人知道这里发生了什么吗?

IQueryable包括未给出正确结果

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

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