У меня есть класс репозитория, который принимает объект QueryConstraints в качестве параметра для запроса хранилища данных и возврата IEnumerable требуемой сущности.Предполагается, что хранилище предотвращает запросы, которые могут занимать слишком много времени для обработки.QueryConstraints имеют следующий вид:
public class QueryConstraints<T>
{
public Expression<Func<T, bool>> WhereClause { get; }
public Expression<Func<T, bool>> SortClause { get; }
public int Skip {get;}
public int Take {get;}
...
some other fields
}
Когда клиент создает QueryConstraints, он должен назначить выражения для свойств WhereClause и SortClause и передать объект в метод Find () хранилища, где должны проверяться выражения.и обработано.
Мой вопрос: Я знаю, что можно использовать дерево выражений для проверки тела выражения.Однако я не знаю, как это сделать, чтобы достичь своей цели.Например, я хочу предотвратить запрос, у которого нет индекса, доступного для его полей.Как мне это сделать?