我从用户界面传递字符“:”时遇到了问题。 NHibernate将它误认为一个命名参数并引发错误,因为它没有任何值。冒号':'错误 - 并非所有命名参数都已在Nhibernate中设置?
例外是: -
并非所有命名参数已经 组:[%] [SELECT COUNT(*)FROM表 吨WHERE t.FirstName LIKE ':%' AND t.ID IN(38,20)]”
有什么解决办法?
我从用户界面传递字符“:”时遇到了问题。 NHibernate将它误认为一个命名参数并引发错误,因为它没有任何值。冒号':'错误 - 并非所有命名参数都已在Nhibernate中设置?
例外是: -
并非所有命名参数已经 组:[%] [SELECT COUNT(*)FROM表 吨WHERE t.FirstName LIKE ':%' AND t.ID IN(38,20)]”
有什么解决办法?
你需要使用SQL LIKE时逃跑的特殊字符,尝试传递参数作为@"\" + ":";
。
您可能正在创建一个错误的方式查询(连接字符串,也许?)
所有这些工作:
session.CreateCriteria<Test2>()
.Add(Restrictions.Like("FirstName", ":%"))
.UniqueResult<Test2>();
session.CreateQuery("from Test2 where FirstName like :expr")
.SetParameter("expr", ":%")
.UniqueResult<Test2>();
你真的是对的,通过连接字符串来准备adhoc查询... – Jango 2010-04-05 18:40:56
Hey..it没有帮助... – Jango 2010-04-06 14:39:04
请出示调用查询的代码。另请参阅此问题的接受答案:http://stackoverflow.com/questions/2492984/how-do-i-escape-a-like-clause-using-nhibernate-criteria – 2010-04-06 14:50:10
这是转义特殊字符后的内部异常...“ {”并非所有命名参数已设置:[%] [SELECT COUNT(*)FROM Table t WHERE t.FirstName LIKE'\\:%']“} – Jango 2010-04-06 14:56:24