2011-01-26 1 views
0

Silverlight/C#/RIA Services로 작성한 응용 프로그램을 살펴보고 테스트를 위해 MVVM에서 수행하여 더욱 강력하게 만듭니다. 내 질문은 이것입니다 : 폼에 항목을 추가/제거/업데이트하기 쉽도록 DomainService.xaml이라는 파일에 정적 리소스를 작성하여 모든 리오 서비스 쿼리를 기반으로했습니다. MVVM은 내 도메인 컨텍스트에 대한 내 액세스에 어떤 영향을 미칩니 까?

<ds:MyDomainContext x:Key="MyDomainContext" /> 

이 내가 엔티티가 하나의 컨텍스트에 부착되고, 같은 개체에 작업을 다른 상황에 의해 영향을 받고 대해 오류를 얻을 것이다 그래야 나 같은 컨텍스트를 사용하여 모든 쿼리를 가질 수. 내 DomainDataSources는 다음과 같이 보입니다.

<riaControls:DomainDataSource AutoLoad="True" Name="discountsDataSource" LoadSize="10" DomainContext="{StaticResource MyDomainContext}" QueryName="GetDiscounts" /> 

이 연습은 다소 효과가있는 것으로 보입니다. 그러나 MVVM 세계에서 이와 같은 것을 볼 수는 없습니다. MVVM 응용 프로그램의 데이터 계층은 모든 컨텍스트를 그대로 유지합니까? 이전처럼 쉽게 데이터 페이지를 사용할 수 있습니까? 아니면이를 수행하기 위해 많은 양의 배관 코드가 있어야합니까?

답변

0

개체를 관리하기 위해 Dependency Injection/IoC 컨테이너를 사용하는 것이 좋습니다. 나는 개인적으로 화합이이 목적을 위해 훌륭하다는 것을 발견했다. 하나의 객체를 유지하는 평생 매니저를 사용하고 모든 클래스에서 UnityContainer의 객체를 요청하도록 컨테이너에 알려주기 만하면됩니다. 유니티에 대한

예 :만큼 당신이 (당신이 모델의 모든 개체를 구성하는 컨테이너를 사용하는 경우 하찮게 쉽게하는) 클래스 사이에 주변에 컨테이너를 통과

// Upon creation of the container 
IUnityContainer container = new UnityContainer(); 
container.RegisterType<MyDomainContext>(new ContainerLifetimeManager()); 

// In your individual model classes 
container.Resolve<MyDomainContext>(); 

후 항상 동일한를 반환합니다 해결 컨텍스트를 요청했습니다.