Участок:Фильтрация необщего DbSet с динамически построен Expression
У меня есть класс, выполненный в виде фасада вокруг Entity Framework DB контекста. Он разработан для поддержки обратной совместимости, он имитирует класс с тем же открытым интерфейсом, но использует DTO вместо объектов EF.
Проблема:
У меня есть следующий метод внутри класса, описанного выше. Смотрите ниже код:
public IQueryable<T> FindBy<T>(Expression<Func<T, Boolean>> predicate) where T : BaseDto {
//GetDestinationType takes source type of some declared mapping and returns destination type
var entityType = Mapping.Mapper.GetDestinationType(typeof (T));
var lambda = Expression.Lambda(predicate.Body, Expression.Parameter(entityType));
// dbContext declared as class field and initialized in constructor
var query = dbContext.Set(entityType).Where(lambda); // <-- Cannot use non-generic expression/lambda
return query.ProjectTo<T>(mapper.ConfigurationProvider); }
- Мне нужно принять выражение, используя DTOs, как в параметре и возврат IQueryable где T: BaseDto в результате
- Мне нужно преобразовать входной предикат в тот же предикат с помощью EF сущностей, как в параметре
- Мне нужно фильтровать необщего EF DbSet с помощью динамически созданного выражения (предиката)
Главный вопрос
Можно ли фильтровать необщий EF DBSet с помощью динамически созданное выражение (предикат)
Пожалуйста, дайте мне немного клея или дальнейшие указания, если мне нужно использовать какой-то другой подход.
Это используется AutoMapper, правильно? –
@ChrisHaines да, правильно –