NHibernate 之调用存储过程

1,创建存储过程:
--创建一个登陆的存储过程,
if exists(select name from sys.sysobjects where name='LoginProc')
 
drop procedure LoginProc
go
create procedure LoginProc(@name varchar(100),@password varchar(100))
as
 
if exists(select u.Name from dbo.MSUser u where u.Name=@name and u.Password=@password)
    
--着重注意,返回的列名为value ,值为 1 或者是 0
    select 1 as value
else
    
select 0 as value

2,修改user.hbm.xml,注意是在class 之后,名称为随便定义, 返回值为value ,类型为long
</class>
  <sql-query name="LoginProceure">
    <return-scalar column="value" type="long"/>
    exec LoginProc ?,?
  </sql-query>
</hibernate-mapping>
3. 执行存储过程

 #region 执行存储过程
        
public IList ExecuteProcedure(string spName,string name,string pwd)
        {
            IList result 
= new ArrayList();
            
try
            {
               
return Session.GetNamedQuery(spName).SetString(0,name).SetString(1,pwd).List();
            }
            
catch (Exception ex)
            {
                
throw ex;
            }
            
finally
            {
                Session.Flush();
            }
        }
        
#endregion
        
         
object obj= il[0];
            
if(obj.ToString()=="1")
                
return true;
            
else
                
return false;


原文地址:https://www.cnblogs.com/csharponworking/p/2046136.html