質問: 複数のデータベースを持つNHibernate WebappどのSessionContextを使用するか 私たちはWebアプリケーションで流暢な設定でNHibernateを使用します。 我々は、単一の構成データベースと、顧客データを保持する多数の異なるデータベースを持っています。 各データベースについて、我々は流暢な構成とそれが初めて使用されるときのSessionFactoryを作成する。 OpenSessionメソッドを呼び出すことによってセッションを取得し、処理が完了するとそのセッションを破棄します。 しかし時には、私たちが読み込みを試みたときにADOデータリーダがまだアクティブであるというエラーメッセージが表示されることがあります。 NHibernateが同じ接続を(再)しようとしていることを示しています。 データベース要求がアトミックな方法で接続によって処理されるようにするにはどうすればよいでしょうか。 (他のリクエストでは再利用できません) 私はSessionFactoryの再作成がうまくいくかもしれないと思うが、それは高価なようだ
回答: いくつかの質問 * 異なる接続文字列を使用しているため、別々のアプリケーションプールですか? * 正確なエラーメッセージは何ですか? これがどのようにnHibernateの欠陥であるべきかわかりません。問題が容易に再現可能な場合は、おそらくあなたが試みることができます: * データベース側からトレースして、何が起こっているかを確認します(特にsp_resetconnection)。 * 違いがあるかどうかを確認するために接続プーリングを無効にする