ABP vNext5.0發布后,原有用法有一些地方發生了細小的變化。對於代碼編寫影響最為廣泛的一條大概就是IRepository不在繼承自IQueryable<TEntity>接口
在4.4.4及之前版本中,我們可以看到IRepository繼承自IQueryable<TEntity>接口如下圖:
所以我們可以通過Repository的AsQueryable()方法獲取IQueryable對象或者使用Linq中為IQueryable<TEntity>提供的Where當方法。
在ABP vNext 5.0后,可以看到IResponse不再繼承自IQueryable接口,上述用法則無法成立。
通過翻找官方源碼我發現,倉儲中提供了方法GetQueryableAsync用於獲取IQueryable對象用於代替原AsQueryable方式,用法如下:
var query = await _repository.GetQueryableAsync();
獲取IQueryable對象后,我們依舊可以使用Linq提供的方法對其進行拼接和操作:
var query = (await _epository.GetQueryableAsync()).Where(x => x......