您的位置:首页 > 编程语言 > ASP

NHibernate 数据源控件 NHbiernate DataSource Control For Asp.net

2007-11-03 11:09 585 查看
最近使用NHibernate做了很多项目,在一些小的项目里,使用NHibernate显示数据并分页非常繁琐 ,于是就开发了这个NHibernate数据源控件。

可以直接使用这个控件来显示数据,也可以使用空间中的对象来管理Session。

1.初使化

首先要在Web.Config中添加控件的HttpModule:


<system.web>


<httpModules>


<add name="nhb" type="cn7ero.NHB.HibernateHttpModule, cn7ero.NHB"/>


</httpModules>


</system.web>

此HttpModule是管理Session用的,可以在需要的时候生成Session,并在Http请求结束后关闭Session。
注:在Http请求结束后,只会关闭Session,而不会自动Flush。

然后添加Global.asax,并在Application_Start中添加以下代码初始化SessionFactory:


void Application_Start(object sender, EventArgs e)




...{


// 在应用程序启动时运行的代码


ISessionFactory sessionFactory;


// 建立SessionFactory


// .....




cn7ero.NHB.FactoryHelper.Configure(sessionFactory);


}



这样,在你的代码中,可以用以下代码获取Session:


cn7ero.NHB.SessionHelper helper = new cn7ero.NHB.SessionHelper();


ISession session = helper.CurrentSession;



在一个Http请求中,无论建立多少个SessionHelper,得到的都是同一个ISession对象。SessionHelper将ISession对象保存在HttpContext.Item中。ISession对象会在Http请求结束后被NHibernateHttpModule对象关闭。

2.在页面中使用NHibernate数据源控件

然后在asp.net页面中添加如下指令即可在页面中使用NHibernate数据源控件了


<%@ Register Assembly="cn7ero.NHB" Namespace="cn7ero.NHB" TagPrefix="nhb" %>

使用代码如下:


<nhb:HibernateDataSourceControl ID="HibernateDataSourceControl1" runat="server" Hql="from Employee" Mode="Hql" >


<SelectParameters>


<nhb:HibernateParameter Name="Name" Expression="Ge" DefaultValue="李琦" />


</SelectParameters>


<SortParameters>


<nhb:SortParameter PropertyName="Id" Direction="Descending" />


</SortParameters>


</nhb:HibernateDataSourceControl>

NHibernate提供SelectParameters和SortParameters来删选和排序数据。SelectParameter中的控件使用方法和Asp.net提供的SelectParameter的使用方法部队多,只是多了一个Expression来确定比较方式。

NHibernate数据源支持 Class、Hql、Sql 三种查询方式。

当使用Class查询时,需要将ClassName属性设置为要查询对象的全名,例如 ClassName="Demo.Employee,Demo" 。当使用Hql或Sql查询时,指定Hql或Sql语句即可,例如Hql="from employee as e where e.Name = :Name"。

当使用Class查询方式时,NHibernateParameter的Expression属性才生效,使用其他查询方式时,将忽略这些设置。使用Class查询方式时,HibernateParameter的Name属性是要比较对象的属性名称,而使用其他查询方式时,Name属性为参数名称。

SortParameter的PropertyName是要排序的属性名称,SortPrarmeter只有在使用Class方式查询时才生效。

现在可以使用NHibernate来简化开发了。

下载地址:
http://dl2.csdn.net/down4/20071103/03140844956.rar
http://download.csdn.net/source/276660

本组件已经在一些项目中应用了,不过由于条件限制,并没有做过深入的测试(Sql查询部分没有测试过)。如有问题,可以加我的MSN共同讨论,cn7ero@msn.com。我的Email是cn7ero@gmail.com。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: