代码之家  ›  专栏  ›  技术社区  ›  MCardinale

如何关闭NHibernate连接?

  •  3
  • MCardinale  · 技术社区  · 16 年前

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

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

    我来自经典的ASP,所以如果与MySQL的连接实际上是关闭的,我通常会这样做。事实上,我通常是如果有一个连接,就像在经典的ASP。

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

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

    非常感谢你。

    1 回复  |  直到 16 年前
        1
  •  5
  •   Paco    16 年前

    会话以非常高效的方式进行连接管理,因此您不必手动执行任何操作,只要您不忘记释放会话(如您所做的那样)。连接不会在会话的整个生命周期中打开,而是仅在需要时打开。到数据库的打开连接数不会超过connectionpool中的连接数,默认情况下为100。几乎在每种情况下,100个连接都不是很多,所以当打开很多连接时,不需要做任何事情。在一个非常繁忙的网站上,您甚至不会使用所有的100个连接,因为webrequests的线程池的大小,它大约是20-40个打开的连接。