NHibernate mysql连接没有关闭?

我正在使用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资源并关闭连接?连接汇集/超时吗?

如果有人能给我一个提示,那将是很棒的.

最佳答案 我很确定Connection正在关闭. ISession上的dispose方法就是这样做的.所以在退出使用块时它不太可能保持打开状态.

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

这一点,再加上在mysql documentation中,它表示关键字Connections表示:

The number of connection attempts (successful or not) to the MySQL server.

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

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

点赞