2013-07-26 29 views
2

我有一個創建一個IQueryable如下通用倉庫實現: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。

我沒有其他參數在查詢。過濾器,orderBy,page和pageSize都是空的。包括所述列表中包含的單個表達與構件提到了表達式被聲明爲

public virtual MyType m_Member { get; set; } 
存儲庫對象POCO類內

我讀過IQueryable刪除包含選擇或投影,但我沒有在這裏做我相信。有人知道這裏發生了什麼嗎?

回答

2

你應該聚集的結果分配給query,我認爲:

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

謝謝你,延緩大腦的肯定的情況下,上週五 – Richard

相關問題