Фильтр для поиска в столбце с NHibernate - PullRequest
0 голосов
/ 23 июня 2011

Мне нужно сделать фильтр для поиска в столбце таблицы в sql.

У меня есть два метода, первый получает строку (Name или LastName) и возвращает Collection<Employee>.

         public ICollection<Employee> GetEmployee_ByName(string Name)
         {
           ICollection<Employee> employee;
           using (ISession session = NHibernateSessionBuilder.OpenSession())
           {
              employee = session.CreateCriteria(typeof(Employee)).Add(Restrictions.Eq("Name", Name)).List<Employee>();
              if (employee.Count == 0)
              {
                employee = session.CreateCriteria(typeof(Employee)).Add(Restrictions.Eq("LastName", Name)).List<Employee>();
              }
               return employee;
            }
          }

Проблема в CreateCriteria(typeof(Employee)).Add(Restrictions.Eq("LastName", Name)), если метод получает строку, например: «Вудс», а в столбце Фамилия запись для этого элемента - «Вудс Тейлор», которая неничего не возвращать, потому что эти потребности равны столбцу.

Или, например, «Майколь Смит», а в столбце запись «Майкол Смит Джонсон», который не возвращает ничего.

Итак,что я могу сделать в этом случае?Сделать хороший фильтр.

1 Ответ

1 голос
/ 24 июня 2011

Используйте Like вместо Eq ...

 employee = session
    .CreateCriteria(typeof(Employee))
    .Add(Restrictions.Like("LastName", "%" + name + "%"))

Ваш текущий код генерирует SQL следующим образом:

select ... from ... where LastName = 'Woods'

Используя Like вместо Eq, вы генерируете SQL следующим образом:

select ... from ... where LastName like '%Woods%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...