새내기 여기에 미안, 이것이 명백한 질문이고, 나의 영어를 유감스럽게 생각한다면. Google에 문의했지만 내 질문에 대한 답변을 찾지 못했습니다.여러 개의 ViewModels에서 동일한 도메인 객체를 요청합니다. 동일한/다른 인스턴스를 제공해야합니까?
Visual Studio, Autofac, EF CTP5 코드 만 사용하고 있습니다 (나중에 EF CTP5는 IoC 컨테이너를 지원하지 않으므로 HHibernate로 전환 함). MVVM, DI, DDD 패턴을 사용하려고합니다.
내 질문입니다 : 여러 ViewModels 리포지토리에서 동일한 도메인 개체를 요청할 때 동일한 인스턴스를 제공해야합니까 또는 각 요청에 대해 새 인스턴스를 만들어야합니까?
public class PersonRepository
{
public Person GetById(int id)
{
using (var dbContext = new MainDbContext())
{
return dbContext.Persons.Where(x => x.Id == id);
}
}
}
그리고 어떤 ViewModle는 도메인 객체의 인스턴스를 수정 한 후
, 나는 방법을 찾아야 할 것이다 : 나는 각 요청에 대해 새 인스턴스를 만들 경우, 나는 내가 다음처럼 작성할 것 같아요 데이터 무결성을 보장하기 위해 다른 모든 Viwe 모델에 인스턴스를 업데이트하도록 알릴 수 있습니다. 나는 모든 요청에 대해 도메인 오브젝트의 동일한 인스턴스를주는 경우에
, 그럼 내가 이런 걸 쓸 것 같아요
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에서도 필요없는 캐쉬 (또는 메모리의 누설을 피하기 (위해) 때문에, cache의 weakreference를 사용)
어떤 방법으로 가야합니까? 더 나은 옵션이 있습니까?
감사합니다!
편집 : 더 자세한 설명을 위해 내용이 변경되었습니다.
(내 영어 죄송합니다) 업데이트 : 나는이에 대한 몇 가지 조사를 한 후
, 나는이 질문이 너무 혼란 실현, 그래서 여기에 새로운 질문을 게시 : Multiple ViewModels modify the same domain object
을
안녕하세요, 답장과 링크를 보내 주셔서 감사합니다. 지금 언급 한 주제를 연구하겠습니다. –