2009-07-03 18 views
4

私はmySQL 5でNHibernateを使用していますが、NHibernateが実際にmySQLへの接続を閉じるかどうかは不明です。NHibernateのmysql接続が閉じられていませんか?

これは私がデータベースにプレイヤーのエンティティを保存するために使用していたコードです。このコードの一部を実行した後

 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

私はConnectionが閉鎖されていると確信しています。 ISessionのdisposeメソッドはそれだけです。したがって、使用ブロックを終了するときに開いたままになる可能性は低いです。

また、私の知るところでは、通常、データベースへの書き込み/読み取り時にのみ接続が開かれます。セッションは開いている可能性がありますが、接続が開かれているとは限りません。

こと、プラスmysql documentationで、それがキーワード接続手段は言う事実:

接続試行(成功したかどうか)の数をMySQLサーバへ。

及び(開いているかいない)接続の現在の状態については何も言いませんが、私は、接続が閉じていることを信じています。

PS:Threads_connectedオープン接続を確認する必要があります。

0

特定のバージョンのMySQL.Data dllに、この同じ問題を引き起こしていたバグがあります。 Connector/NETを最新のものに更新してください。これは私の問題を解決しました。

関連する問題