简体   繁体   English

使用NHibernate调用存储过程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM