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"
на каждого из них. Код для выполнения чего-то подобного может быть немного уродливым, но это должно быть возможно.