IncludeFilter inGeneric Repository


Вопрос

Мне также нужен фильтр. У меня есть статус записи во всех таблицах. Поэтому мне нужно отфильтровать записи на основе этого. Для этого я использую метод 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;
    }

Когда я включаю, где условие от вызывающего метода (бизнес-класс) работает нормально. Но я не хочу включать их там, где есть условие во всех местах. Поэтому мне нужно изменить этот метод, чтобы включить здесь условие.

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

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

Популярные ответы

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

Затем вы можете изменить свой параметр Expression<Func<T, IRecord>>[] в Expression<Func<T, IRecord>>[] .

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





Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему