同じHttpRequestの間に2つの異なるデータベース(それぞれ異なるサーバー上)からデータを読み取る必要があるASP.NET 4 Webアプリケーション(MVC 4リリース候補、NHibernate 3、Fluent-NHibernate)があります。私は2つのリポジトリを持っています:IndividualRepositoryとProductRepositoryです。個別リポジトリは読み取り専用で、データベースAに接続します。製品リポジトリは読み取り/書き込みであり、データベースBに接続します。両方のデータベースのweb.configに接続文字列があります。
この「複数のデータベースサーバー」要件が課される前の私の戦略は、静的なHttpModuleを接続することでしたSessionFactoryProvider<WebSessionContext>
。ISession
これには、 sessionFactoryProvider.GetCurrentSession()を介して返される静的メソッド「GetCurrentSession」がありました。次に、BeginRequestでを呼び出しsessionFactoryProvider.Bind()
、EndRequestでを呼び出しますsessionFactoryProvider.Unbind()
。
2番目のデータベースサーバーを追加して、私の計画は2番目の静的SessionFactoryProvider<WebSessionContext>
で対応するGetCurrentSessionメソッドを作成することでした。
目的をテストするために、2つのNUnitテスト(リポジトリごとに1つ)があり、セッションファクトリプロバイダーと同様のセットアップを行っていますが、今回はを使用していSessionFactoryProvider<ThreadStaticSessionContext>
ます。ここでは、セッションコンテキストとしてThreadStaticを使用することが問題の一部であると思われますが、両方のリポジトリをテストすることはできません。テストを機能させることができなかったので、実際のWebアプリケーションを試していません。
テストを間違って書いているだけですか?ThreadStaticSessionContext
統合テスト以外のものを使用する必要がありますか?それぞれのテストメソッドを分離で機能させることができましたが、両方のセッションファクトリプロバイダーが含まれている場合は1つしか機能しません。WebSessionContext
テストが機能するようになったら、Webアプリで2つのファクトリプロバイダーを使用しても同様の問題が発生しますか?
どんな助けでも大歓迎です!