可以直接使用这个控件来显示数据,也可以使用空间中的对象来管理Session。
1.初使化
首先要在Web.Config中添加控件的HttpModule:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
此HttpModule是管理Session用的,可以在需要的时候生成Session,并在Http请求结束后关闭Session。
注:在Http请求结束后,只会关闭Session,而不会自动Flush。
然后添加Global.asax,并在Application_Start中添加以下代码初始化SessionFactory:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
这样,在你的代码中,可以用以下代码获取Session:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
在一个Http请求中,无论建立多少个SessionHelper,得到的都是同一个ISession对象。SessionHelper将ISession对象保存在HttpContext.Item中。ISession对象会在Http请求结束后被NHibernateHttpModule对象关闭。
2.在页面中使用NHibernate数据源控件
然后在asp.net页面中添加如下指令即可在页面中使用NHibernate数据源控件了
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
使用代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
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。