Jon*_*son 10 nhibernate nhibernate-criteria
我正在尝试对整数列进行搜索,我需要做的是实际将列转换为varchar然后执行类似搜索.这可能吗?使用Criteria API最简单的方法是什么?
var search = "123";
criteria.Add(Restrictions.Like("Number", "%" + search + "%"))
Run Code Online (Sandbox Code Playgroud)
sir*_*cco 24
如果Number是一个字符串,那么很容易:
.Add(Restrictions.Like("Number", "some_value",MatchMode.Anywhere))
Run Code Online (Sandbox Code Playgroud)
由于你有一个数字,NHibernate将检查Number的类型,如果你给它一个字符串,它将抛出一个异常.
不确定为什么NH团队没有提供带对象的重载作为参数和MatchMode参数....
无论如何,你仍然可以这样做:
.Add(Expression.Sql("{alias}.Number like ?", "%2%", NHibernateUtil.String))
Run Code Online (Sandbox Code Playgroud)
编辑
关于别名:
(我找不到文档谈论这个的地方,但这是我对它的理解)
{alias}返回NH内部用于最新CreateCriteria的别名.所以如果你有:
session.CreateCriteria<User>("firstAlias")
.CreateCriteria("firstAlias.Document", "doc")
.Add(Expression.Sql("{alias}.Number like ?", "%2%",
NHibernateUtil.String)).List<User>();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,{alias}将是'doc' - 所以你最终会得到:doc.Number.
因此,请始终在需要使用其别名的CreateCriteria之后使用{alias}.
| 归档时间: |
|
| 查看次数: |
6815 次 |
| 最近记录: |