nhibernate queryover LIKE с деревьями выражений

Я хочу добавить метод к моему базовому классу репозитория, который позволяет мне использовать выражения LIKE , но я не совсем уверен о том, как это сделать. Я хочу создать общий метод, который просматривает переданное дерево выражений и ищет подстановочные знаки в переданных строковых значениях. Затем он соответственно генерирует оператор QueryOver .

Сейчас у меня есть следующее:

public IList<T> FindAll(Expression<Func<T, bool>> criteria, char wildCard)
{
    return SessionFactory.GetCurrentSession()
            .QueryOver<T>()
            .Where(criteria)
            .List();
}

Очевидно, что самое сложное еще впереди. Мне нужно просмотреть дерево выражений и динамически построить запрос, используя QueryOver . Ищу советы о том, как это сделать. Или я просто зря трачу здесь свое время и должен просто создать в своих репозиториях отдельные методы, которые обрабатывают запросы LIKE ?

Дополнительные критерии

В идеале я хотел бы отметить разницу между следующим:

  • search *
  • * search
  • * search *

Таким образом, сгенерированный запрос будет выглядеть следующим образом:

  • поле LIKE 'search%'
  • field LIKE '% search'
  • field LIKE ' % search% '
7
задан Cole W 17 January 2012 в 01:54
поделиться