可以直接使用这个控件来显示数据,也可以使用空间中的对象来管理Session。
1.初使化
首先要在Web.Config中添加控件的HttpModule:
< 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:
... {
// 在应用程序启动时运行的代码
ISessionFactory sessionFactory;
// 建立SessionFactory
// .....
cn7ero.NHB.FactoryHelper.Configure(sessionFactory);
}
这样,在你的代码中,可以用以下代码获取Session:
ISession session = helper.CurrentSession;
在一个Http请求中,无论建立多少个SessionHelper,得到的都是同一个ISession对象。SessionHelper将ISession对象保存在HttpContext.Item中。ISession对象会在Http请求结束后被NHibernateHttpModule对象关闭。
2.在页面中使用NHibernate数据源控件
然后在asp.net页面中添加如下指令即可在页面中使用NHibernate数据源控件了
使用代码如下:
< 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。