NHibernate mysql连接没有关闭?

时间:2009-07-03 09:54:08

标签: mysql nhibernate

我正在使用NHibernate和mySQL 5,我有点不确定NHibernate是否真的关闭了与mySQL的连接。

这是我用来将Player实体保存到数据库的代码:

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

运行这段代码后,我使用

从mySQL服务器中选择当前连接数
show status like 'Conn%' ;

每次增加值1!

因此,插入播放器10次(=启动程序10次)会使连接数增加10.但NHibernate会话的session.IsClosed属性为false。

为了释放NHibernate资源并关闭连接,我是否还需要做其他事情?连接是否已合并/超时?

如果有人能给我一个提示,那就太好了。

2 个答案:

答案 0 :(得分:2)

我很确定Connection正在关闭。 ISession上的dispose方法就是这样做的。因此,在退出使用块时,它不可能保持打开状态。

另外,据我所知,连接通常只在写入/读取数据库时打开。会话可能是开放的,但这并不意味着连接也是开放的。

此外,在mysql documentation中,它表示关键字连接表示:

  

MySQL服务器的连接尝试次数(成功与否)。

并且没有说明连接的当前状态(打开与否),让我相信连接已关闭。

PS:您应该使用 Threads_connected 来查看打开的连接。

答案 1 :(得分:0)

某些版本的MySQL.Data dll中存在一个错误,导致我遇到同样的问题。确保将Connector / NET更新到最新版本。这解决了我的问题。