我也需要过滤器。我在所有表中都有记录状态。所以我需要根据这个过滤记录。为了适应这种情况,我使用了Z.EntityFramework.Plus的IncludeFilter方法。
我的通用数据代码如下;
public async Task<T> GetAsync(int id, params Expression<Func<T, object>>[] includes)
{
var query = _context.Set<T>().AsQueryable(); //.FindAsync(id);
if (includes.Length > 0)
{
query = includes.Aggregate(query,
(current, include) => current.IncludeFilter(include));
}
var item = await query.FirstOrDefaultAsync(x => x.Id == id);
return item;
}
当我包含来自调用方法(业务类)的条件时,其工作正常。但我不想把这些条件包含在所有地方。所以我需要改变这个方法来包含where条件。
请帮我做。我的include参数
中没有任何扩展名注意:我需要在每个include中包含where条件。
答案 0 :(得分:0)
理论上,您可以使所有实体类型实现一个具有IRecord
属性的接口(RecordStatus
?)。
然后,您可以将include参数更改为Expression<Func<T, IRecord>>[]
。
棘手的部分是根据你给出的表达式构造新的include
表达式,在每个表达式上添加&& r.RecordStatus == "whatever"
。做类似事情的代码可能有点难看,但它应该是可能的。