NHibernate 3.0搜索子字符串

时间:2011-03-28 20:36:31

标签: nhibernate

我正在使用NHibernate 3.0 IQueryOver进行搜索,我在其中搜索了一个关键字。我需要搜索一个字符串,看它是否是字符串的一部分,

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

但这并没有像预期的那样完成工作。如何进行这样的搜索?

2 个答案:

答案 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条款。您是否期望进行区分大小写搜索?