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。
可以直接使用这个控件来显示数据,也可以使用空间中的对象来管理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。
相关文章推荐
- 交互式日历日程控件Scheduling Control for ASP.NET
- Pager Control for ASP.NET(asp.net分页控件例子)
- Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug
- 日历日程控件Scheduling Control for ASP.NET
- ASP.NET DEMO Ⅳ : 使用数据源控件将数据绑定到 ListControl 上
- ASP.NET 之 Chart Control for .Net Framework
- 在Codeproject.com上post了我的第一篇文章:Custom ComboBox server control for ASP.NET
- A good Cloud Control for Asp.net
- Custom TabControl for asp.net page
- Setting Expires and Cache-Control: max-age headers for static resources in ASP.NET
- Flash Player Control for ASP.NET
- Custom DialogBox Control Component For ASP.net
- Building a DataGrid Helper Control For ASP.NET 1.x: Part 1
- 从Winform到Asp.Net,推荐一个第三方组件集RAD Control for Asp.Net
- Visual Studio 2008 SP1: EntityDataSource for ASP.Net (转载)
- ASP.NET WebForm Best Practice 之充分利用DataSourceControl
- Building a DataGrid Helper Control for ASP.NET 1.x: Part 2
- ComponentArt WebUI For asp.nET 2.1,So Good Asp.nET UI Control!
- Using DayPilot (Outlook-Like Calendar/Scheduling Control for ASP.NET)
- [ASP.NET AJAX]Important notes when we create web service methods for some extenders in AjaxControlToolkit package