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

最近使用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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值