如何关闭NHibernate连接?

MCa*_*ale 3 mysql database nhibernate asp.net-mvc

我使用ASP.NET MVC,NHibernate和MySQL完成了一个站点.在我的项目中,我有一些存储库类,每个类都使用如下代码的方法:

using(ISession session = NHibernateHelper.OpenSession()) {
    using(ITransaction transaction = session.BeginTransaction()) {
        session.Save(cidade);
        transaction.Commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

我来自Classic ASP,所以如果与MySQL的连接实际上已经关闭,我会很有用.事实上,如果有一个像Classic ASP那样的连接,我会很有用.

我应该做些什么来明确关闭连接/会话还是"自动关闭"?

如果我的服务器上有很多打开的连接,有办法吗?

非常感谢你.

Pac*_*aco 5

会话以非常有效的方式进行连接管理,因此您不必手动执行任何操作,只要您不忘记处理会话(就像您一样).连接在会话的整个生命周期内都不会打开,但仅在需要时才会打开.与连接池中的连接数量相比,数据库的打开连接数不会多,默认情况下为100.在几乎每种情况下,100个连接都不会很多,因此在打开大量连接时,您无需执行任何操作.在一个非常繁忙的网站上,你甚至不会使用所有100个连接,因为webrequests的线程池的大小,它将类似于20-40个开放连接.