如何关闭NHibernate连接?

时间:2009-08-26 18:19:03

标签: mysql asp.net-mvc database nhibernate

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

using(ISession session = NHibernateHelper.OpenSession()) {
    using(ITransaction transaction = session.BeginTransaction()) {
        session.Save(cidade);
        transaction.Commit();
    }
}

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

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

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

非常感谢。

1 个答案:

答案 0 :(得分:5)

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