0

Web アプリケーションでは、流暢な構成で NHibernate を使用します。

単一の構成データベースと、顧客データを保持する多数の異なるデータベースがあります。

データベースごとに、最初に使用するときに流暢な構成と SessionFactory を作成します。

OpenSession メソッドを呼び出してセッションを取得し、処理が終わったら破棄します。

ただし、読み取ろうとすると、ADO データ リーダーがまだアクティブであるというエラー メッセージが表示されることがあります。NHibernate が同じ接続を (再) 使用しようとしていることを示しています。

データベース要求が接続によってアトミックに処理されるようにするにはどうすればよいでしょうか。(他のリクエストによる再利用不可)

SessionFactory を再作成するとうまくいくかもしれませんが、それは高価なようです

4

1 に答える 1

2

いくつかの質問

  • 別の接続文字列を使用しているため、別のアプリケーション プールですか?
  • 表示される正確なエラー メッセージは何ですか?

これがどのように nHibernate のせいなのかわかりません。問題が簡単に再現できる場合は、次のことを試すことができます。

  • データベース側からトレースして、何が起こっているかを確認します (特に sp_resetconnection)。
  • 接続プールを無効にして、違いがあるかどうかを確認します
于 2012-02-06T16:02:54.740 に答える