我正在使用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来查看打开的连接.