次のように設計された ASP.Net MVC 3 フォト ギャラリーがあります。
Data Repositories(IImageRepoSitory, ITagRepository etc)
|
Services (IGalleryService, IWebService etc)
|
Web Application
Ninject を使用して、必要なサービスとリポジトリを Web アプリケーションに挿入します。
実際のデータベースを使用する前に、単純な ArrayList (および JSON シリアル化) を既存のロジック (JsonImageRepository/JsonTagRepository になります) として使用しましたが、これは完全に正常に機能します。しかしその後、EF4 CTP5 (Code First) に移行したところ、多くの問題が発生しました。基本的に、これらのリポジトリとサービスを Singleton (Global.asax.cs で宣言) として挿入しましたが、リポジトリにアクセスするスレッドが複数ある場合は、次のように表示されます。
データ接続が閉じられています。
Ninjectのスレッドモードやリクエストモードなどに変更しましたが、さまざまな例外が発生しました(コンテキストの複数のインスタンスに関しては、シングルトンが唯一のオプションであるべきだと思います)。
設計に問題はありませんか?または、これらのコンポーネントをどのように構成すればよいですか?