mysql - NHibernate mysql 连接没有关闭?

标签 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 的 session.IsClosed 属性为 false。

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

如果有人能给我提示就太好了。

最佳答案

我很确定连接正在关闭。 ISession 上的 dispose 方法就是这样做的。所以它不太可能在退出 using block 时保持打开状态。

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

那个,再加上 mysql documentation 中的事实,它表示关键字 Connections 表示:

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

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

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

关于mysql - NHibernate mysql 连接没有关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1078673/

相关文章:

php - 哪个函数可以替代 htmlspecialchars() 数组?

mysql - HTML : from select list need to add value to mysql

c# - nHibernate - 定义类(和表)时何时使用对象

c# - NHibernate IQueryable 集合作为根的属性

mysql - 分组、计数和连续圈数

mysql - 如何根据主表中的值从另一个表中选择另外两个列?

c# - 在另一个标准之上使用一个标准

c# - Fluent NHibernate - HasMany 复合键

PHP 字符串包含整数

asp.net-mvc - FluentNHibernate SchemaUpdate 不起作用