NHibernate 3.0 поиск с подстрокой

Я делаю поиск с помощью NHibernate 3.0 IQueryOver, где у меня есть ключевое слово для поиска. Мне нужно искать в строке, чтобы увидеть, является ли она частью строки,

Query().Where(e => e.Name.Contains(keyword)).List();

Но это не делает работу, как ожидалось. Как выполнить такой поиск?

2 ответа

Решение

Я проверил источник NHibernate и ExpressionProcessor для QueryOver Строка, как вы опубликовали выше, не поддерживает Contains, Поддерживаемые операции: IsLike и IsIn. Вы можете использовать IsLike или если вы заинтересованы в Contains, используйте Linq. Например:

(from user in db.Users 
where names.Contains(user.Name)
  select user);

или же

query.Where(person.Name.IsLike("%test%")) //In QueryOver

Я предполагаю, что вы получилиUnrecognised method callисключение

Насколько я знаю (по крайней мере, для SQL Server он, похоже, не работает с SQL Server Compact), NHibernate преобразует этот IQueryable в регистр без учета регистра, например, "%keywork%". where пункт. Вы ожидали регистрозависимого поиска?

Другие вопросы по тегам