MVC4アプリケーションとNinject.MVC3でEF 4.3を使用しています。 コントローラは、-Repositoryスイッチを使用してMVCscaffoldされます。 MVCScaffolderは、Ebを使用してリポジトリクラス(および対応するIRepositoryインターフェイス)を作成します。このリポジトリクラスでは、DbContextから派生したオブジェクトが、常にスキャフォールドされたリポジトリ内のデータメンバとして「新規作成」されます。MVC3スキャフォールドリポジトリ内のシングルトンDbContextオブジェクトを取得
MyContext context = new MyContext();
コントローラの足場の性質は、コントローラごとに、通常は対応するリポジトリも取得するようなものです。
質問:
1)それはあなたがのためのコントローラを持っている各ドメインオブジェクトのリポジトリを持っている意味を成していますか? これは集計根だけが
であるリポジトリパターンと比べて直観に反しているようです。
2)それが リポジトリ・オブジェクトがインスタンス化されるか、またはそれがDIコンテナに登録 DbContext派生オブジェクトのシングルトンインスタンスを有することが意味をなすない毎回発生DbContext派生オブジェクトの新しいインスタンスを有することが意味を成しませんアプリの起動などのような シングルトンのリポジトリにそれを解決:
Bind<MyContext>().To<MyContext>().InSingletonScope(); //ninject code on app startup
//resolve context in repositories:
MyContext context = ServiceLocator.Current.GetInstance<MyContext>();
は、任意の欠点は、アプリケーションの存続期間 シングルトンとしてDbContext派生オブジェクトへの保持にありますか?
ありがとうございました。
これは私も同様に傾いていたものでした。確認していただきありがとうございます –