初心者ここ、申し訳ありませんが、これは明らかな質問であり、私の英語には申し訳ありません。私はGoogleに挑戦しましたが、私の質問に対する答えは見つかりませんでした。同じ/異なるインスタンスを複数のViewModelが同じドメインオブジェクトに要求する必要がありますか?
私はVisual Studio、Autofac、EF CTP5コードのみを使用しています(EF CTP5はIoCコンテナをサポートしていないため、後でHHibernateに切り替えることがあります)、MVVM、DI、DDDのパターンを使用しようとしています。
私の質問は:複数のViewModelが同じドメインオブジェクトをリポジトリから要求した場合、それらのインスタンスに同じインスタンスを渡すか、リクエストごとに新しいインスタンスを作成する必要がありますか?
私はリクエストごとに新しいインスタンスを作成した場合、私はこのような何か書くと思います:
public class PersonRepository
{
public Person GetById(int id)
{
using (var dbContext = new MainDbContext())
{
return dbContext.Persons.Where(x => x.Id == id);
}
}
}
をし、任意のViewModleは、ドメイン・オブジェクトのそのインスタンスを変更した後、私は方法を見つける必要がありますすべての他のViweModelにインスタンスを更新するように通知して、データの整合性を確保します。
私はすべての要求のためのドメイン・オブジェクトの同じインスタンスを与えた場合、私はこのような何かを書かなければならないだろうと思います。
public class PersonRepository
{
List<Person> _cache = new List<Person>();
public Person GetById(int id)
{
var person = getFromCache(id);
if (person == null)
{
person = getFromDatabase(id);
_cache.Add(person);
}
return person;
}
}
そして私もからインスタンスを削除する方法を見つける必要がありますいずれかのViewModelで必要とされないとき(またはキャッシュの弱参照を使用するとき)にキャッシュを使用して、メモリリークを回避します。
どのようにすればいいですか?より良い選択肢がありますか?
ありがとうございます!
編集:内容を変更するために内容が変更されました。
(私の英語のため申し訳ありません)
更新:
私はこの上でいくつかの研究をした後、私はこの質問があまりにも混乱して実現ので、私はここで新しい質問投稿:Multiple ViewModels modify the same domain object
を
こんにちは、詳細な返信とリンクありがとう!私はあなたが今述べたトピックを研究するつもりです。 –