<!---->NHibernate的Session的管理一直是个问题,在系统开发中
如果有lazy="true",如果不对Session进行管理,会抛出以下错误:
CODE:
Failed to lazily initialize a collection - no session
在Web项目下的解决方案,就是在Application_BeginRequest方法中打开Session并放入HttpContext,在Application_EndRequest方法中关闭Sesssion就可以了。
还好,NHibernate1.2已经提供了相关的支持,如下:
在web.config中加入以下代码
CODE:
<httpModules>
<add name="CurrentSessionModule" type="NHibernate.Example.Web.CurrentSessionModule" />
</httpModules>
程序如下:
CODE:
using System;
using System.Web;
using NHibernate.Context;
namespace NHibernate.Example.Web
{
public class CurrentSessionModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
context.EndRequest += new EventHandler(Application_EndRequest);
}
public void Dispose()
{
}
private void Application_BeginRequest(object sender, EventArgs e)
{
ManagedWebSessionContext.Bind(HttpContext.Current, ExampleApplication.SessionFactory.OpenSession());
}
private void Application_EndRequest(object sender, EventArgs e)
{
ISession session = ManagedWebSessionContext.Unbind(HttpContext.Current, ExampleApplication.SessionFactory);
if(session !=null)
{
if (session.Transaction.IsActive)
{
session.Transaction.Rollback();
}
if (session != null)
{
session.Close();
}
}
}
}
}
分享到:
相关推荐
Summer of Nhibernate Session 01 源代码 看了后收获很大
NHibernate中的Session示例源代码,适合对NHibernate的使用有一定的了解,并想了解NHibernate源代码及其软件结构的人。
Summer of Nhibernate Session 14 Code.zip
Summer of Nhibernate Session 11 Code.zip
Summer of Nhibernate Session 05 Code.zip
Summer of Nhibernate Session 10 Code.zip
Summer of Nhibernate Session 08 Code.zip
Summer of Nhibernate Session 13 Code.zip
Summer of Nhibernate Session 07 Code.zip
Summer of Nhibernate Session 10 Code.zip
Summer of Nhibernate Session 06 Code.zip
Summer of Nhibernate Session 02 Code.zip 第二部分代码
Summer of Nhibernate Session 04 Code.zip 第四部分
Summer of Nhibernate Session 02a Code
Summer of Nhibernate Session 03 Code.zip 第三部分
完全用nhibernate框架开发的.net项目
NHibernate+Oracle搭建项目架构示范代码
.Net下应用NHibernate的模板项目,很实用的框架实例,我也是分享别人的资料,很不错的东西,现在供更多人分享。。。。。。
nhibernate 源码nhibernate 源码nhibernate 源码nhibernate 源码
nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#