IncludeFilter в общем репозитории

Мне нужен фильтр в том числе. У меня есть статус записи во всех таблицах. Поэтому мне нужно отфильтровать записи на основе этого. Чтобы приспособиться к этому, я использую метод IncludeFilter Z.EntityFramework.Plus.

Мой общий код данных ниже;

    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 здесь.

Пожалуйста, помогите мне сделать. Я не получил расширение где в моем параметре включения

Примечание: мне нужно включить, где условие в каждом из включить.

1 ответ

Теоретически, вы можете заставить все ваши типы сущностей реализовывать интерфейс (IRecord?) с RecordStatus собственность на это.

Тогда вы можете изменить параметр включений на Expression<Func<T, IRecord>>[],

Сложнее было бы построить новый include выражения, основанные на тех, которые вы дали, добавив && r.RecordStatus == "whatever" на каждого из них. Код для выполнения чего-то подобного может быть немного уродливым, но это должно быть возможно.

Другие вопросы по тегам