0

我还需要过滤器。我在所有表中都有记录状态。所以我需要根据这个过滤记录。为了适应这一点,我使用了 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 条件时,它工作正常。但我不想在所有地方都包含这些条件。所以我需要改变这个方法来包括 where 条件本身。

请帮我做。我的包含参数中没有任何扩展名

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

4

1 回答 1

0

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

然后您可以将您的包含参数更改为Expression<Func<T, IRecord>>[].

棘手的部分是根据给定的表达式构建新include的表达式,并&& r.RecordStatus == "whatever"在每个表达式上添加一个。做这样的事情的代码可能有点难看,但它应该是可能的。

于 2017-08-09T16:31:49.340 回答