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>();