真のsession-pr-request動作でRavenDBIDocumentSessionをリポジトリに取り込むために使用する正しいメカニズムに関するアドバイスを探しています。
これはグリーンフィールドMVC3アプリケーションであり、NuGetを使用してNinject/Ninject.MVC3を取得しました。RavenDBは外部サーバーで実行されています(つまり、埋め込まれていません)。
適切なリポジトリを返すようにNinjectモジュールを設定し、リクエストごとにセッションを設定しました。
しかし-MVC3が各アクションメソッドのコントローラーをインスタンス化するというのは本当ですか?その場合、MVC3 / Ninjectにリポジトリと必要なセッションを注入させるだけで、問題ありません。
ただし、コントローラーが複数のリクエストで再利用される場合、以前のリクエストからぶら下がっているリポジトリが古いセッションを使用して破棄される可能性があるため、これは機能しない可能性があります。
私はこれを行うためのいくつかの方法を見てきました-上記は基本的な方法です。また、各リクエストの開始時にIoCコンテナから新しいセッションを取得するActionFilterAttributeのようなことを試みましたが、その場合、どこに配置する必要がありますか?
リポジトリには、コンテナから現在のセッションを毎回実際に取得するSessionプロパティが必要ですか?これにより、リポジトリの実装とIoCコンテナの間に結合が追加されますが、それ以外の場合は機能するはずです。
これを行うための適切な方法は何ですか?かっこいい子供たちはどうやってやってるの?どんな助けでも大歓迎です!