IncludeFilter inGeneric Repository


我也需要过滤器。我在所有表中都有记录状态。所以我需要根据这个过滤记录。为了适应这种情况,我使用的是Z.EntityFramework.PlusIncludeFilter方法。

我的通用数据代码如下;

    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参数中获得任何扩展名

注意:我需要在每个包含中包含条件。

热门答案

理论上,您可以使所有实体类型实现一个带有RecordStatus属性的接口( IRecord ?)。

然后你可以将include参数更改为Expression<Func<T, IRecord>>[]

棘手的部分是根据你给出的那些构造新的include表达式,在每个表达式上添加&& r.RecordStatus == "whatever" 。做类似的事情的代码可能有点难看,但它应该是可能的。





许可下: CC-BY-SA
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因