Я хочу добавить метод в свой базовый класс репозитория, который позволит мне использовать выражения LIKE, но я не совсем уверен, как это сделать. Я хочу создать общий метод, который просматривает переданное дерево выражений и ищет подстановочные знаки в переданных строковых значениях. Затем он будет генерировать оператор QueryOver
соответственно.
В настоящее время у меня есть следующее:
public IList<T> FindAll(Expression<Func<T, bool>> criteria, char wildCard)
{
return SessionFactory.GetCurrentSession()
.QueryOver<T>()
.Where(criteria)
.List();
}
Очевидно, самое сложное еще впереди. Мне нужно просмотреть дерево выражений и построить запрос, используя QueryOver
динамически. Поиск некоторых указателей на то, как действовать с этим. Или я просто трачу здесь свое время и должен просто создать отдельные методы в своих репозиториях, которые обрабатывают запросы LIKE?
Дополнительные критерии
В идеале я хотел бы рассказать о разнице между следующим:
- поиск*
- *поиск
- *поиск*
Таким образом, сгенерированный запрос будет таким:
- поле LIKE 'поиск%'
- поле LIKE '%search'
- поле LIKE '%search%'