NHibernate1.2存储过程使用

ISession 对象 session

IQuery query=session.GetNamedQuery("存储过程名")

在实体映射文件(.xml文件)写明调用细节(写在任何被映射的实体映射文件都可 即<sql-query>...</sql-query>)

如果有返回值要写明返回值!

例:

<!--proc_query_allroomtype存储过程名-->

<sql-query name="proc_query_allroomtype" >
    <return alias="roomType" class="HotelManage.Models.RoomType, HotelManageModels" ></return>
    exec proc_query_allroomtype
  </sql-query>

返回对象集合query.List<Type type>();

也可返回List获object[]  例:

<sql-query name="proc_demo1" >
   <return-scalar column="colA" type="int"/>
    <return-scalar column="colB" type="int"/>    exec proc_query_allroomtype
  </sql-query>

<!--colA数据库表列名-->

<!--number 是该存储过程的输入参数-->

<sql-query name="ScalarSProcs">
  <
return-scalar column="value" type="int"/>
  <
return-scalar column="name" type="string"/>
 
exec scalarSProcs :number,:value或exec scalarSProcs :?,?

或exec scalarSProcs :number,?
</sql-query>

<!--调用-->

_session.GetNamedQuery("ScalarSProcs")
        .SetInt32("number", 6).SetString("value").List();

也可不写在配置文件中 直接调用存储过程

例如:

   ISQLQuery query = Session.CreateSQLQuery("exec query_unitByName ?,?");
           query.AddScalar("unitname", NHibernateUtil.String);
           query.SetString(0, unitName);
           query.SetInt32(1, count);
           return query.List<string>();

 


原文地址:https://www.cnblogs.com/zhangqifeng/p/1419010.html