[英]Calling stored procedure using NHibernate
I can't get this stored procedure call to work. 我无法使此存储过程调用正常工作。 I keep getting a "Additional information: Parameter UserName does not exist as a named parameter in [LockUser]" message
我不断收到“其他信息:[LockUser]中的参数UserName作为命名参数不存在”消息
using (var session = sm.OpenSession())
{
var query = session.CreateSQLQuery("LockUser")
.SetString("UserName", User.UserName.ToString());
}
mapping 映射
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Models.Mappings" assembly="Intranet">
<sql-query name="LockUser">
<property name="UserName"/>
exec LockUser :UserName
</sql-query>
can anyone point me in the right direction? 谁能指出我正确的方向?
You are mixing two features. 您正在混合两个功能。
17.2. 17.2。 Named SQL queries
命名SQL查询
small cited snippet: 小引用片段:
<sql-query name="persons">
<return alias="person" class="eg.Person"/>
SELECT person.NAME AS {person.Name},
person.AGE AS {person.Age},
person.SEX AS {person.Sex}
FROM PERSON person
WHERE person.NAME LIKE :namePattern
</sql-query>
usage: 用法:
IList people = sess.GetNamedQuery("persons")
.SetString("namePattern", namePattern)
.SetMaxResults(50)
.List();
So as we can see there must be call GetNamedQuery()
因此,我们可以看到必须调用
GetNamedQuery()
Or you can use 或者你可以使用
Chapter 17. Native SQL Chapter 17.本机SQL
small cited snippet: 小引用片段:
sess.CreateSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS")
.AddEntity(typeof(Cat));
Summary: for named queries, we have to use .GetNamedQuery()
. 摘要:对于命名查询,我们必须使用
.GetNamedQuery()
。 We can also use .CreateSQLQuery()
to build SQL ourselves. 我们还可以使用
.CreateSQLQuery()
自己构建SQL。 Check also this for working example: Nhibernate CreateSQLQuery Stored Procedure result to non mapped class 另请参见以下示例: Nhibernate CreateSQLQuery存储过程结果到非映射类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.