Silverlight MVVM将如何影响我对域上下文的访问?
我正在考虑采用我在Silverlight/C/RIA服务中编写的应用程序,并通过在MVVM中进行测试使其更加健壮。我的问题是:为了便于表单添加/删除/更新项,我在一个名为DomainService.xaml的文件中创建了一个静态资源,所有ria服务查询都基于该文件Silverlight MVVM将如何影响我对域上下文的访问?,silverlight,mvvm,wcf-ria-services,Silverlight,Mvvm,Wcf Ria Services,我正在考虑采用我在Silverlight/C/RIA服务中编写的应用程序,并通过在MVVM中进行测试使其更加健壮。我的问题是:为了便于表单添加/删除/更新项,我在一个名为DomainService.xaml的文件中创建了一个静态资源,所有ria服务查询都基于该文件 <ds:MyDomainContext x:Key="MyDomainContext" /> 这使我能够使用相同的上下文进行所有查询,这样我就不会因为一个实体被附加到一个上下文而受到另一个在同一个实体上工作的上下文的影响
<ds:MyDomainContext x:Key="MyDomainContext" />
这使我能够使用相同的上下文进行所有查询,这样我就不会因为一个实体被附加到一个上下文而受到另一个在同一个实体上工作的上下文的影响而出错。我的DomainDataSources最终看起来像这样:
<riaControls:DomainDataSource AutoLoad="True" Name="discountsDataSource" LoadSize="10" DomainContext="{StaticResource MyDomainContext}" QueryName="GetDiscounts" />
这种做法似乎效果相当不错。但我在MVVM世界中没有看到类似的情况。MVVM应用程序的数据层如何保持所有上下文的清晰?我是否仍然能够像以前一样轻松地使用数据寻呼机,或者是否需要大量的管道代码才能完成这一任务 我建议使用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>();
只要在类之间传递容器(如果使用容器构造所有模型对象,这非常容易),那么resolve将始终返回您请求的相同上下文