ウィンザーを始めたとき、DIは簡単だと思いました。今、それは私にますます混乱を引き起こしています。
リポジトリは、シングルトンライフサイクルを持つクラスとして私を襲います。アプリケーションの存続期間中にFoosをデータベースにロードして保存するには、FooRepositoryの単一インスタンスが必要です。
ただし、各リポジトリは、ダーティチェックを実行し、データベースなどを操作するUnitOfWorkへの参照を保持します。UnitOfWorkのライフサイクルはPerWebRequestです。シングルトンインスタンスのように、UnitOfWorkがシングルトンであることはまったく意味がありません。 (たとえば)複数のユーザーセッションによって同時に行われた変更をフラッシュします。
したがって、UnitOfWorkへの参照を保持するシングルトンFooRepositoryがあり、セッションの最後に破棄されます。リポジトリの動作にどのような影響があるかはわかりませんが、よく聞こえません。
WebアプリでRepositoryクラスとUnitOfWorkクラスのライフサイクルを管理する適切な方法を、簡単な英語で(おそらくコードを使用して)誰かが説明できますか?