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

Ninject会调用dispose并关闭NHibernate Isession吗?

Ninject是一个轻量级的依赖注入框架,用于实现对象的解耦和依赖注入。它本身并不会直接调用dispose方法来关闭NHibernate的ISession。

NHibernate是一个流行的ORM(对象关系映射)框架,用于将对象映射到关系型数据库中。在使用NHibernate时,通常会创建一个ISession对象来管理数据库连接和事务。为了确保资源的正确释放,我们需要在使用完ISession后手动调用其Dispose方法来关闭连接。

当使用Ninject来管理ISession的生命周期时,我们可以通过配置Ninject的绑定来指定ISession的生命周期范围。例如,可以将ISession的生命周期设置为每次请求时创建一个新的实例,或者将其设置为每个线程创建一个实例。在这些情况下,当请求结束或线程结束时,Ninject会自动调用ISession的Dispose方法来关闭连接。

总结起来,Ninject本身并不会直接调用dispose方法来关闭NHibernate的ISession,但可以通过配置Ninject的绑定来管理ISession的生命周期,从而实现自动关闭ISession连接的功能。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法给出具体的链接地址。但腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储、人工智能等,可以根据具体需求在腾讯云官网上查找相关产品和文档。

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

相关·内容

NHibernate学习笔记之一,Hello world!

2、新建项目添加引用,将NHibernate-3.3.0.GA-bin中的“Iesi.Collections.dll”与“NHibernate”引用到项目中,如图2所示复制Configuration_Templates...文件夹中的对应数据库配置文件,这里使用MSSQL,所以复制“MSSQL.cfg.xml”,NHibernate的配置信息适当修改 。...是NHibernate的工作单元,它是一个持久化管理器,我们通过ISession来从数据库中存取数据。...NHibernate通过对Configuration().Configure()的调用来装载配置文件,初始化成一个Configuration实例,一般ISessionFactory通常只是被初始化一次... sessionFactory.OpenSession();             return currentSession;         }         //关闭NHibernate实例

58520

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

ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。...它们可能只是一些普通的POCO,仅仅是与ISession中关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以在应用层的任意地方使用。...Transient Objects and Collections(临时对象和集合): 表示临时的未被ISession托管的持久化对象,它们被应用层临时创建但直到ISession关闭都不会被持久化。...一个ISession可能开启多个事务,Transaction scopes may be used instead(原话是这个,大意是可以改用事务作用域)。...实例状态 在NHibernate中,一个可持久化的对象有三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。

1.1K20

NHibernate 缓存

一级缓存 一级缓存就是 ISession 缓存, 在 ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession...在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation...CategoryID]=@p0; @p0 = 1 [Type: Int32 (0)] 1, Beverages second get category 1 1, Beverages 从输出可以看到, 只有第一次调用...[CategoryID]=@p0; @p0 = 1 [Type: Int32 (0)] After Get Category 从输出可以看到, 调用 Get 方法之后, Nh 立刻从数据库加载实例...cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 CacheRegion 给查询缓存指定了特定的命名缓存区域, 如果两个查询相同, 但是指定的 CacheRegion 不同, 则也从数据库查询数据

58811

NHibernate 缓存

一级缓存 一级缓存就是 ISession 缓存, 在 ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession...在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation...CategoryID]=@p0; @p0 = 1 [Type: Int32 (0)] 1, Beverages second get category 1 1, Beverages 从输出可以看到, 只有第一次调用...[CategoryID]=@p0; @p0 = 1 [Type: Int32 (0)] After Get Category 从输出可以看到, 调用 Get 方法之后, Nh 立刻从数据库加载实例...cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 CacheRegion 给查询缓存指定了特定的命名缓存区域, 如果两个查询相同, 但是指定的 CacheRegion 不同, 则也从数据库查询数据

43210

Nhibernate_nhibernate与ef区别

NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH代替你做.你的代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确的东西...开发过程 HNibernate将会有一些工具帮助你,如:生成schema,根据映射文件(Mapping file)生成类,更新schema(一个新开发者的建议).然而,在本文档中,前提是你已经手动的数据库的创建喝...一切变得很轻松.这儿,我们的User.hbm.xml可能像这样: <?...ISession对象代表着一个到后端数据库连接,ITransaction代表一个NHibernate管理的事务(Transaction)....ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession(); ITransaction

56430

Nhibernate_juan benet

NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH代替你做.你的代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确的东西...开发过程 HNibernate将会有一些工具帮助你,如:生成schema,根据映射文件(Mapping file)生成类,更新schema(一个新开发者的建议).然而,在本文档中,前提是你已经手动的数据库的创建喝...一切变得很轻松.这儿,我们的User.hbm.xml可能像这样: <?...ISession对象代表着一个到后端数据库连接,ITransaction代表一个NHibernate管理的事务(Transaction)....ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession(); ITransaction

36150

Nhibernate入门与demo

学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门的文章。...3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们的Nhibernate的旅程。    ...告诉你吧,session是我们只需要一个配置文件就可以随处调用了。这么神奇?      Nhibernate带给我们的就是:对于开发者通常的数据持久化相关的编程任务,解放其中的95%!...; ISessionFactory _SessionFactory = cfg.BuildSessionFactory();//建立Session工厂 ISession...Nhibernate做的不只是这些!搭载Spring.Net  Nhibernate能做的更多!而且代码更加优美!      源码下载:NhibernateDemo.zip

32830

IoC在ASP.NET Web API中的应用

在用于创建的HttpController的Create方法中,我们调用此UnityContainer对象的Resolve方法创建目标HttpController对象。...如下面的代码片断所示,我们在Application_Start方法中创建了一个UnityContainer对象,通过调用泛型方法RegisterType注册了IContactRepository...接下来将要自定义的DependencyResolver基于另一个叫作“Ninject”的IoC框架。较之Unity,Ninject是一个更加轻量级的IoC框架。...篇幅所限,我们不便对这个IoC框架作过多的介绍,有兴趣的读者可以访问其官网(“http://www.ninject.org/”)了解Ninject。...如果获取的对象实现了IDisposable接口,它会被放入这个列表中,我们在实现的Dispose方法中释放该列表中的所有对象。

1.7K60

Fluent NHibernate之旅二--Entity Mapping

Fluent方式:或许你觉得我们用了配置文件进行映射,相当的简单,想怎么配就可以了,但实际用下来,我还是更喜欢Fluent的映射方式,映射代码如下: public class ProductMap :...映射的方式很简单吧,相信大家都能看懂吧,为什么如此方便呢?这其实就是完全靠了Lambda表达式,大家可以看看老赵的“从.NET框架中委托写法的演变谈开去”,就非常清楚了。...expression):一看就很明白了,主键嘛,因为有了VS,因为有了泛型,因为有了委托,因为……,我们只需要简单的 m => m.ProductID,可能你会说主键的类型,主键还有很多特性,难道不需要配置?...public void NHibernateFactory() { var factory = TradSessionFactory.GetCurrentFactory(); using (ISession...总结 今天介绍了如何映射简单的实体,但很多时候这都是理想的数据设计,还有更多复杂,不可预计的数据设计,这时候我们Fluent能做到

99590

系统架构师-基础到企业应用架构-分层

下面我们就来针对当前的一些分层模式来进行讲解, 且进行简要的分析和应用场景介绍。...ThreeArchitecture.DAL.NhibernateNHibernate实现数据访问层接口,Nhibernate支持目录主流的大部分数据库,所以不需要按照1)中的方案去做,只需要实现一次即可...通过使用Ninject配套你的软件架构,那么代码将会变得更加容易编写、重用性强、 易于测试和修改。...控制器 控制器接受用户的输入调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。...它只是接收请求决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数 据。

1.3K20

系统架构师-基础到企业应用架构-分层

下面我们就来针对当前的一些分层模式来进行讲解, 且进行简要的分析和应用场景介绍。...ThreeArchitecture.DAL.NhibernateNHibernate实现数据访问层接口,Nhibernate支持目录主流的大部分数据库,所以不需要按照1)中的方案去做,只需要实现一次即可...通过使用Ninject配套你的软件架构,那么代码将会变得更加容易编写、重用性强、 易于测试和修改。...控制器 控制器接受用户的输入调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。...它只是接收请求决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数 据。 ASP.NET MVC ?

96950

Asp.Net Web API 2第十一课——在Web API中使用Dependency Resolver

这个框架也只能通过调用无参数的构造函数来创建你的控制器。 就在这个时候dependency resolver来了。...对于你的dependency resolver不处理的任何类型,GetService 返回null,GetServices 也返回一个空的集合对象,尤其是,别抛出一个未知类型的异常。...这个框架在IDependencyScope 上调用GetService 去获得这个控制器。当框架处理完这个请求的时候,它在子范围中调用Dispose 。...如果你使用一个Ioc容器,你不需要在代码中直接连同对象,几个开源的.Net Ioc容器是可以利用的,例如Autofac, Castle Windsor, Ninject, Spring.NET, StructureMap...这个ScopeContainer.Dispose方法释放了Unity的子容器。

69840

ActiveMQ NMS使用过程中的一点经验

全国各地,近万台车辆,每台车辆每隔几秒就发送一次GPS位置数据,如果我们提供API给第三方公司去调用,显然无论是第三方还是我们这边,服务器都是是扛不住的,这么做也是不合理的,于是,便采取了消息队列,第三方采集到的数据直接推送到消息队列代理服务器...先不说Socket连接的浪费情况,及Timer这个.NET中近乎Bug的一个东西,这种做法实际中行之无效,因为连接异常情况下再打开,往往是打开失败的,比如上次异常连接没有关闭,状态不对,或者ClientID...3、进程重启导致Consumer链接失败   具体情境是这样的:MQ消费者进程是寄宿在Windows服务中的,运维那边做测试或维护,会在MQ运行正常的情况下直接重启服务,有时候重启失败,过阵子启动,又成功了...我又验证了下,正常运行下,先关闭服务,过几秒再开启,就没这问题,也印证了自己的推断。...{ _connection.Stop(); _connection.Close(); _connection.Dispose

93830

C# IDispose

这意味着该对象从析构队列中移除。 对象成为垃圾:当没有任何引用指向该对象时,该对象将变成垃圾。即使是在调用 Dispose() 后,只要仍然有对对象的有效引用,垃圾收集器就无法回收它。...当你创建一个实现 IDisposable 接口的类时,你需要定义一个 Dispose 方法。这个方法主要是关闭、释放或者重置非托管资源。...(false); } } 在以上代码中: Dispose() 方法是 IDisposable 接口的一部分,它执行两个操作:调用 Dispose(true) 告知垃圾回收器不需要再处理该对象...析构函数 ~ResourceManagement() 调用 Dispose(false) 来释放非托管资源。垃圾回收器自动调用此析构函数。...这通常会发生在调用了 IDisposable.Dispose() 方法后,因为在该方法中我们已经手动释放了对象持有的资源。 被Disepose释放的对象所占用的内存空间立即被回收

16920
领券