我正在使用NHibernate 3.0 IQueryOver进行搜索,我在其中搜索了一个关键字。我需要搜索一个字符串,看它是否是字符串的一部分,
Query().Where(e => e.Name.Contains(keyword)).List();
但这并没有像预期的那样完成工作。如何进行这样的搜索?
答案 0 :(得分:7)
我检查了NHibernate源代码,而ExpressionProcessor
字符串的QueryOver
就像您上面发布的那样不支持Contains
。它支持的操作是IsLike和IsIn。您可以使用IsLike
,或者如果您热衷于包含,请使用Linq。例如:
(from user in db.Users
where names.Contains(user.Name)
select user);
或
query.Where(person.Name.IsLike("%test%")) //In QueryOver
我猜你有一个“Unrecognised method call
”例外。
答案 1 :(得分:0)
据我所知(至少,对于SQL Server,它似乎不适用于SQL Server Compact),NHibernate将IQueryable转换为不区分大小写的“类似'%keywork%'”where
条款。您是否期望进行区分大小写搜索?