Welcome

首页 / 软件开发 / .NET编程技术 / NHibernate之旅(17):探索NHibernate中使用存储过程(下)

NHibernate之旅(17):探索NHibernate中使用存储过程(下)2010-07-23 cnblogs 李永京本节内容

引入

实例分析

拾遗

结语

引入

上两篇,介绍使用MyGeneration提供的模板创建存储过程和删除对象、创建对象、更新对象整个详细过程,这篇介绍如何利用<sql-query>做更多的事,在程序开发中,我们不仅仅只利用存储过程增删查改对象,我们还可以想执行任意的存储过程,这不局限于某个对象,某个CURD操作,怎么做呢?注意:本篇并非官方权威的资料,所以敬请参考。如果你还没有学习NHibernate,请快速链接到NHibernate之旅系列文章导航。

实例分析

下面我用几个例子来分析使用<sql-query>来执行存储过程。

1.返回标量

Step1:存储过程

CREATE PROCEDURE scalarSProcs
@number int
AS
BEGIN
SELECT @number as value, "YJingLee" as name
END

这里模拟验证键/值对,按键查询名称。这里返回YJingLee。

Step2:映射文件

在映射文件中使用<sql-query>并定义<sql-query>查询的名称,使用<return-scalar>元素来指定返回的标量值,并指定字段的别名和类型。调用存储过程时,需要一个参数,这里用命名参数表示,这里打开Customer.hbm.xml在Class元素上编写如下代码:

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