私はMVPとEntity Frameworkの世界でかなり新しいです。EF ObjectContext、サービスとリポジトリ - コンテキストライフタイムを管理する。
私は現在View + Presenterコンビネーションを持っています。ビューにはEditとDeleteの2つのイベントがあり、発表者はこれらのイベントをリッスンします。私はサービスオブジェクトとリポジトリも設定しています。サービス層は、建設のためには(1つ下にトップオブジェクトを渡しているので、ObjectContextを取るいくつかのリポジトリの実装取ります
ObjectContext
|
V
Repositries
|
V
Service Object
|
V
Presenter
を今問題となっていること、私は一番上にオブジェクトコンテキストを作成するときに、それは、プレゼンターが生きている間、編集と削除がサービスから同じコンテキストインスタンスを使用することを意味しています。ServiceObject.DeleteとServiceObject.Editを呼び出すと、変更トラッキングを管理するのが難しくなる同じコンテキストが使用されます。私が理解しているところでは、文脈は実際には短命で、作業単位のためだけに、私には編集と削除の両方が異なっています。
エンティティフレームワークでDIを行い、コンテキストの存続時間をどのように管理しますか?
私はリポジトリの横にオブジェクトのコンテキストを新しくした人を見てきましたが、これは良いパターンです。私はそのようにそれを行う場合
ServiceObject{
public void Edit(// some args) {
Using(var context = new MyObjectContext) {
var repo = new MyRepo(context);
var entity = repo.GetForID(12);
// Do some stuff for edit
context.SaveChanges();
}
}
}
しかし、私はもはやServiceObjectのコンストラクタに私のリポジトリを渡すと:(DIは致しておりません。
はそれとも私がサービスオブジェクトでは、何かのようにそれを行うべきではありません。
私はこのような状況で何ができますか?
誰もが、私はそれを見ることができます任意のオープンソースプロジェクトは、この問題で私を助けて知っています。
ありがとうございます。
uuh! – Roubachof