重複の可能性:
カスタム モデル バインダーに依存関係を挿入し、Ninject を使用して InRequestScope を使用する
NHibernate セッションをカスタム モデル バインダーにバインドしようとしています。
カスタム モデル バインダーはシングルトンのように見えるため、スレッド セーフに注意する必要があると思います。これは私の現在のIoCコードです:
kernel.Bind<ISession>().ToProvider<SessionProvider>().InRequestScope()
.OnActivation(x => ServiceModelBinder.Service = kernel.Get<IServiceService>());
私のバインダーではThreadStatic
、セッションでの同時実行の問題を回避するために、属性で装飾された静的サービス フィールドがあります。
これも良い考えですか?
リクエストごとのスコープ オブジェクトをビュー モデルに挿入するより良い方法はありますか? それとも、紙の上で見栄えが悪いことを心配せずにDependencyResolver
、必要な場所から現在のセッションを取得する必要がありますか?