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
пункт. Вы ожидали регистрозависимого поиска?