<!---->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();
}
}
}
}
}
分享到:
相关推荐
打开这个解决方案,我们可以看到整个项目结构和依赖关系,了解如何在Nhibernate的帮助下组织大型项目。 接着,"DataAccessLayerTest"文件夹很可能包含了数据访问层的测试代码。在Nhibernate中,数据访问层是连接...
1. **DineAndDiscussNHibernate.sln**:这是整个项目的核心解决方案文件。在Visual Studio中打开此文件,我们可以看到项目的整体结构和依赖关系。它通常包含多个子项目,如业务逻辑层、数据访问层、用户界面等,这些...
这个解决方案可能包含了一个完整的Web应用程序或桌面应用程序,涵盖了从数据访问层到业务逻辑层的全部架构。 "DataAccessLayerTest"文件夹很显然是数据访问层的测试代码,这是进行单元测试和集成测试的重要部分。...
- **NHibernateWebDemo.sln**:这是Visual Studio解决方案文件,包含了整个项目的配置和引用。 - **51aspx源码必读.txt**:可能是一个关于源码阅读的指南或提示文件。 - **最新Asp.Net源码下载.url**:指向一个...
在“WebSite5”这个项目中,很可能是创建了一个基于 ASP.NET 的 Web 应用程序,展示如何在 Web 环境下集成 NHibernate。这通常包括设置 NHibernate 配置,如数据库连接字符串、实体映射文件(XML 或注解形式),以及...
2. **NHibernateWebDemo.sln**:这是一个Visual Studio解决方案文件,其中包含了整个Web应用程序的项目结构,用于演示NHibernate在Web环境中的应用。你可以打开这个文件,通过查看各个项目和代码文件来学习实际的...
NHibernate 是Java平台上的Hibernate的.NET版本,它为.NET开发者提供了一个强大的持久层解决方案。通过ORM,NHibernate可以自动将.NET对象转换为数据库表记录,反之亦然。这样,开发者可以使用面向对象的编程方式...
在该实例中,`WEB (2).sln`文件是一个Visual Studio解决方案文件,它包含了整个项目的配置和依赖关系。打开这个文件,我们可以看到项目的结构和各个组件。`WEB`可能是一个包含ASP.NET Web应用程序的项目,其中包含了...
NHibernate提供了一种对象关系映射(ORM)解决方案,使得开发人员可以使用面向对象的编程模型来操作数据库。在用户登录的过程中,我们需要查询数据库以验证用户名和密码,这通常涉及到数据库的CRUD(创建、读取、...
此外,Spring.NET还包含了Web、数据访问、事务管理等多个模块,为.NET应用提供了一站式的解决方案。 【MVC与NHibernate和Spring.NET的结合】 在MVC应用中集成NHibernate和Spring.NET,可以创建一个高效且灵活的系统...
- **NH.sln**:这是Visual Studio的解决方案文件,包含了项目的整体配置和所有相关的项目文件引用。 - **NH.suo**:这是Visual Studio的用户选项文件,存储了用户的个人设置和调试信息。 - **Nhibernate使用说明.txt...
### NHibernate教程知识...综上所述,NHibernate不仅提供了一种高效的ORM解决方案,还大大简化了.NET应用程序与数据库交互的过程。通过掌握上述关键知识点,开发者可以更高效地利用NHibernate来构建高质量的应用程序。
10. **NhibernateFramwork.sln**:这是一个Visual Studio解决方案文件,包含了整个项目的所有相关组件,如项目、引用、配置等。通过打开这个文件,我们可以看到项目的结构和组成。 通过深入研究这个Nhibernate配置...
【标签】:“ext asp.net mvc nhibernate 完整项目示例”标签明确了项目的核心技术栈,EXT.NET提供了丰富的UI控件,ASP.NET MVC提供了灵活的架构设计,而NHibernate则是强大的数据持久化解决方案。 【文件名称列表...
NHibernate 是 .NET 上最流行和成熟的 ORM 解决方案之一,它支持多种数据库系统,如 SQL Server、MySQL、Oracle 等。 2. **NHibernate 的主要组件**: - **Configuration**:配置 NHibernate,包括数据库连接信息...
`NHDemo.sln`是Visual Studio解决方案文件,它包含了项目及其依赖项的集合。在这个案例中,`NHDemo.sln`管理着整个NHibernate练习的各个部分,包括ASP.NET web应用和可能的类库项目。 `Bin`目录存放编译后的程序集...
- 作者在开发过程中记录了遇到的问题和解决方案,提醒读者可能会遇到因组件版本差异导致的异常,提供了具体的版本信息。 通过这个项目,读者可以学习到如何整合NHibernate、SQLite和MVC进行实际开发,包括数据库...
NHibernate 是 .NET 上的一个流行的 ORM 解决方案,它允许开发者使用面向对象的方式操作数据库,避免了直接编写 SQL 查询。NHibernate 提供了对象持久化、查询语言(HQL)以及事务管理等功能,极大地简化了数据访问...
FastSpring则是一个知名的电子商务解决方案,主要处理软件销售和订阅管理。在这里,我们将深入探讨这三个组件如何协同工作,并提供一个整合的例子。 **Spring.NET** Spring.NET是.NET平台上的一个轻量级框架,它...
ASP.NET with NHibernate 是一个深度探讨如何在ASP.NET MVC框架中使用NHibernate作为持久层解决方案的教程。ASP.NET MVC是一个灵活、模式驱动的框架,用于构建可维护、高性能的Web应用程序。而NHibernate则是一个...