首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Autofac确保每个请求有一个NHibernate ISession?

要使用Autofac确保每个请求有一个NHibernate ISession,您需要遵循以下步骤:

  1. 安装Autofac和Autofac.NHibernate52集成包:

在您的项目中安装以下NuGet包:

代码语言:txt
复制

Install-Package Autofac

Install-Package Autofac.NHibernate52

代码语言:txt
复制
  1. 配置Autofac容器:

在您的应用程序中配置Autofac容器,以便为每个请求创建新的NHibernate ISession。

代码语言:csharp
复制

var builder = new ContainerBuilder();

// 注册NHibernate ISession

builder.Register(c =>

{

代码语言:txt
复制
   var sessionFactory = c.Resolve<ISessionFactory>();
代码语言:txt
复制
   var session = sessionFactory.OpenSession();
代码语言:txt
复制
   session.FlushMode = FlushMode.Commit;
代码语言:txt
复制
   return session;

})

.InstancePerLifetimeScope();

// 注册其他依赖项

// ...

var container = builder.Build();

代码语言:txt
复制
  1. 在请求处理过程中使用Autofac容器:

在处理每个请求时,使用Autofac容器创建一个新的依赖关系解析作用域。这将确保每个请求都有一个新的NHibernate ISession。

代码语言:csharp
复制

using (var scope = container.BeginLifetimeScope())

{

代码语言:txt
复制
   var myService = scope.Resolve<MyService>();
代码语言:txt
复制
   // 处理请求

}

代码语言:txt
复制

在这个示例中,MyService是一个依赖于NHibernate ISession的服务。通过使用Autofac容器创建一个新的作用域,您可以确保每个请求都有一个新的ISession。

通过遵循这些步骤,您可以使用Autofac确保每个请求都有一个NHibernate ISession。这有助于确保数据库连接的正确管理和请求的性能优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# 数据操作系列 - 11 NHibernate 配置和结构介绍

ISession - NHibernate.ISession一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。...它们可能只是一些普通的POCO,仅仅是与ISession中关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以在应用层的任意地方使用。...实例状态 在NHibernate中,一个可持久化的对象三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。...这一节,将带领大家看一下NHibernate中我们常用的配置,因为配置项很多,但一大部分通常情况都遇不到使用它的时候。...总结 这是一篇枯燥乏味的说明文,主要介绍了Nhibernate的基本内容。下一章我们来试试,如何创建Nhibernate的映射配置。

1.1K20

NHibernate 如何对session管理,实现lazy=true

但是NHibernate就出现了一个问题。如果每次进行持久化操作都open一次session然后close一次session,那么将不能使用lazy这个机制。...使用的是Nhibernate对session绑定到request里边的机制。 http://hugh-lin.javaeye.com/blog/167730 本人在实践过程中,尝试了第二种方法。...但使用Nhibernate的绑定时,出错,由于对NHibernate不熟悉,所以就完全不知道怎么解决。最后只能考虑结合第一个方法来创新一下。...其中实现IHttpModule接口是为了加入到Web初始化节点中,使得每次request的时候,都会执行Application_BeginRequest和Application_EndRequest两个函数... EventArgs e)         {             CloseSession();         }         ///          /// 获取当前请求会话请求

62160

NHibernate学习笔记之一,Hello world!

准备工作: 需要使用.NET Framework 2.0或上以版本的框架,准备NHibernate框架,本文使用3.3版,到目前NHibernate都还是基于.net framework 2.0,官方下载地址...开始做一个简单的增删改查示例,如图1示例:  图1 1、创建数据库与表,这里假设使用NibernateDemo数据库,Users表包括(id,name,pwd)字段,id是主键自动增长,name与pwd...column="pwd"  type="string" length="16" not-null="false">      每个持久化类都应该有一个标识属性...是NHibernate的工作单元,它是一个持久化管理器,我们通过ISession来从数据库中存取数据。...ISessionFactory代表一个数据库,并且使用一个XML配置文件(Web.config或者hibernate.cfg.xml)。

58320

NHibernate总结

现在的项目中数据访问使用的是NHibernate一个ORM框架,小弟也是在后期加入项目组,之前对NHibernate就一直没有接触过,所以一直在学习NHibernate,都是一些很基础的一些东西,写出来总结一下...开始使用NHibernate 我们亲自动手,一步一步实现一个NHibernate简单程序来,我只实现了简单的增删改查功能。...每个文件的详细代码在下面介绍 (2)     在NH.Data层引用Nhibernate相关的DLL ?...首先,我们要从ISessionFactory中获取一个ISession(NHibernate的工作单元)。ISessionFactory可以创建并打开新的Session。...这个实例我编写了一个辅助类NHibernateHelper 用于创建ISessionFactory并配置ISessionFactory和打开一个新的Session单线程的方法,之后在每个数据操作类可以使用这个辅助类创建

90340

NHibernate教程

一、NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NHibernate一个面向.Net环境的对象/关系数据库映射工具。...二、NHibernate使用步骤 1.为系统引入NHibernate的库,并且配置NHibernate; 2.新建一个将要持久化.Net对象的表; 3.构建一个需要被持久化的.Net类; 4.构建一个可以让...NHibernate知道如何完成ORM映射的XML文件; 5.使用NHibernate的API来编程 三、NHibernate使用 1....配置NHibernate (1)NHibernate的配置文件两种:在桌面应用程序(WinForm)中为App.config,在网页应用程序(WebForm)中为web.config。...使用NHibernate的API进行编程 数据库编程不外乎“添加”、“删除”、“更新”,看看NHibernate如何实现这三种操作吧。

33810

C# 数据操作系列 - 12 NHibernate的增删改查

前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...不过,社区爱好者开发了一个名为《Fluent NHibernate》的项目,用来支持NHibernate的流式配置。...接下来,让我们探索class如何映射成的。 1.2.1 id 任何一个映射都必须声明一个数据表的主键,大多数类也必须有一个唯一标示字段用来区分不同的实例。...中,多对一的配置是在一的一端,表示该类一个外键导航。...首先,创建一个泛型模板类,并约束泛型为类: public class Repository where T: class { } 添加一个ISession属性,用来后续访问操作,并由构造方法赋值

1.1K20

C#——Nhibernate探索

这里两个类库;可以分析得出,这两个类库是要被引用的。 类库拥有对应的XML,没找到具体使用该XML的方法。所以暂时不去理他。 NHibernate.pdb应该是没有用的。估计是作者忘记删除了。...再之后,我上网调查了下Nhibernate的应用。 上网调查后,发现NhibernateCastle框架、LinFu框架、Spring.Net三种。...看起来很复杂,文章很多,写的又很复杂,于是我放弃调查,直接尝试使用,首先第一步,直接引用类库。...一、建立了一个类库程序,引用Iesi.Collections.dll和NHibernate.dll两个DLL。  接下来,我们开始建立持久化对象。...我描述了自身一步一步配置Nhibernate的路径,我觉得还算高效,大家也可以效仿,用来学习陌生框架。 当然不必太追求速度,因为每个人的基础不一样。我比较熟悉Entity Framework。

47930

NHibernate介绍「建议收藏」

C#可用以解决对象/关系数据库映射的工具有多种,常见的EF (Entity Framework)、NHibernate、iBATIS等,各自的优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...NHibernate使用的核心组件。...创建数据模型 NHibernate允许直接使用Plain Old CLR Objects (POCOs),而不用通过存储过程来直接和数据库交互。使用POCOs的一个优势在于不用绑定特定的持久化层。...name表示上面的程序集和命名空间中的类名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。 id元素告诉NHibernate哪个数据库的字段和对应的对象作为一个唯一键来使用。...在本例中,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID。 property标签是见得最多的标签。它简单地映射一个到数据表或者视图中对应字段的映射。

63120

Nhibernate_nhibernate与ef区别

步骤1:创建数据库表 我们正在做的是一个非常简单的NH示例.在这个例子里面,我们实现一个基本的用户管理子系统.我们将会使用一个user表(sql server 2000): use NHibernate...步骤3:编写映射文件(Mapping File) 现在我们了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...驱动,连接到本地的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....在代码里面使用NHibernate是很简单的事情: 1. 创建一个Configuration对象. 2....创建一个Session对象....... ISession对象代表着一个到后端数据库连接,ITransaction代表一个NHibernate管理的事务(Transaction).

56030

Fluent NHibernate之旅

Fluent NHibernate了它,我们可以完全脱离配置文件,不过博客园中介绍Fluent NHibernate的文章非常少,而且官方文档也还没有完全,所以对于我来说也就一点一点摸索起来,这也激起了我写这个笔记的欲望...2、下载NHibernate类库,虽然Fluent已经了最新版本,但我们还需要Proxy的Dll,这里我们使用NHibernate.ByteCode.Castle这个程序集。...在NHibernate中,ISession是操作数据的核心,我们需要通过SessionFactory来建造ISession来进行数据的交互。...下面我们在代码中创建一个SessionFactory,NHibernate建议我们在一个应用程序中使用一个数据库一个SessionFactory,这里我们用单数据库,代码如下: public static...传统方式对于一些经常使用的程序员来说非常简便,加上代码生成工具,使用起来也会游刃有余,但对于新手来说,Fluent绝对是一个好帮手。

1K60

Nhibernate_juan benet

步骤1:创建数据库表 我们正在做的是一个非常简单的NH示例.在这个例子里面,我们实现一个基本的用户管理子系统.我们将会使用一个user表(sql server 2000): use NHibernate...步骤3:编写映射文件(Mapping File) 现在我们了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...在代码里面使用NHibernate是很简单的事情: 1. 创建一个Configuration对象. 2....创建一个Session对象……. ISession对象代表着一个到后端数据库连接,ITransaction代表一个NHibernate管理的事务(Transaction)....如发现本站涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

36050

c# 常用框架整理

程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作的。...XProxy是一个支持插件开发的数据交换机,可以编写插件对中转数据进行处理。内置NAT插件、加解密插件、反向代理、直接代理、间接代理等插件。...和MVC3.0,使用Razor模板引擎,很强的插件机制,包括支付配送功能都是通过插件来实现 的,基于xml的多语言版本,非常灵活的语言切换功能,包括在后台都能同时编辑产品的中英文属性,非常适合做外贸,...Autofac http://autofac.org/ Autofac是一款非常优秀的IOC框架,比较于其他的IOC框架,如Spring.NET,等等之类的,它非常的轻量级且性能上也很卓越。...你 的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理 数据的时间.

4.7K10

Fluent NHibernate之旅二--Entity Mapping

如果你要体验NHibernate的强大,首先你就要学会配置,包括SessionFactory和Mapping的配置。今天跟上一篇一样,会使用传统方式和 NHibernate 进行讲解。...本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate的实体映射(Entity Mapping)做的非常好,虽然不是完美,但一些我们经常使用的,基本上已经都支持了,而且配置也相对比较简单...、总价、订单状态、创建时间等属性,状态现在是int类型,过后我演示一下如何使用枚举型。...的映射方式,所以是非常好的一个方法,我有时候做映射的时候,遇到问题都会生成出来,随时查看问题所在,所以说是非常有用的一个方法,而且你可以把你的映射文件直接用到NHibernate项目中去。...,也就是Map()的时候,我想看看Map还有哪些方法,结果就看到了CustomTypeIs() 和 CustomTypeIs() 两个方法,一个使用反射,一个用泛型,强类型,我当然会选择后者咯。

99490

使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

先写一个简单的给你定义的数据库中添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...,名字随意,添加一个表,名字随意,然后添加两个字段,一个字段名称为name,一个为age,好了表建好之后,我们开始使用很简单很简单一个C#连接MySql数据库的代码 using System; using...} 注意开头前面的几个命名空间的引用,缺一不可,执行完上面代码之后,(我自己创建的数据库名字为:apengchao,表名字为:apengchao),打开数据库,需要刷新一下,就可以看到表里面已经了数据了...Nhibernate包来实现一个很简单的对数据增删改查的操作,这一次需要用到我们之前下载的Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样的: ?...帮助类,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下: using System; using

1.4K30

Orchard 发布1.0版本和ASP.NET MVC 3 RTM

Orchard作为ASP.Net 开源系统的一部分发布,隶属于Outercurve Foundation(微软一个开源项目托管平台CodePlex.com,而CodePlex基金会则是一个促进企业和社区在开源方面展开合作的非营利组织...Orchard项目的计划目标是以下三方面: 独特的基于.Net 能够吸引终端客户,脚本人员和开发人员的应用程序; 一个可复用的组件集合并能够简单建立这些应用; 一个强有力的社区去帮助定义这些应用和扩展。...Orchard项目是一个很好的ASP.NET MVC 3的学习例子,同时你可以将它用于生产环境,Orchard不是一个玩具,经过了1年多的研发。...其本身也使用了大量的开源项目,IoC 使用的是 Autofac 2 & Autofac contrib 及 Castle Windsor 2.0(没有使用 entlib 及 unity),界面使用 JQuery...及部分 YUI ,以及Html5,持久层使用NHibernate 及 Fluentnhibernate, nhlambdaextensions,linqnhibernate 。

1.1K70
领券