如何使用RIA进行批量操作?

时间:2014-08-04 08:49:47

标签: silverlight wcf-ria-services domainservices

我的silverlight客户端中的大多数操作都是一次添加/更新/插入/删除多个实体的操作。

E.g: CreateStandardCustomer添加了CustomerAddressPersonContract记录。 CreateEnterpriseCustomer添加了CustomerAddress,2x PersonCreditLimit条记录。

看起来像使用DomainService,您一次只能做一件事,例如添加客户记录,添加地址等。如何进行批量操作?

您可以说只是从Silverlight客户端添加相关记录并调用SubmitChanges()方法。但是,这很难对服务器端进行验证,因为一次只能添加/更新/删除某些记录组。例如。在上面的示例中,单独添加的Address记录在此系统中无效。

另一个例子是Renew,它会更新Customer记录并添加Renewal。这些操作无法单独执行。

感谢您的帮助, Kurren

编辑:服务器端验证需要检查批处理中的正确操作是否已发生。例如。从上面的示例中我们Renew然后应该创建Renewal并且应该更新Customer(一个没有另一个无效)。

1 个答案:

答案 0 :(得分:0)

我可能在这里遗漏了一些内容,但是您更新一批实体的方式与执行单个实体的方式相同:即对您的上下文执行所有操作,然后在该上下文中调用SubmitChanges。在服务器上,将根据您提交的所有更改调用类型的插入/删除/更新方法。

我们在Silverlight中使用RIA / EF来做到这一点。如果您只是在客户端上下文(带图表)或100中创建单个实体并不重要,因为只要您提交这些更改,就会对该上下文的完整变更集进行操作。

编辑:如果在适当的属性上使用RequiredComposition属性设置实体元数据失败,您还可以使用DomainService.ChangeSet对象检查已提交的内容并对哪些更改做出决策你想接受与否。