我的silverlight客户端中的大多数操作都是一次添加/更新/插入/删除多个实体的操作。
E.g:
CreateStandardCustomer
添加了Customer
,Address
,Person
和Contract
记录。
CreateEnterpriseCustomer
添加了Customer
,Address
,2x Person
和CreditLimit
条记录。
看起来像使用DomainService,您一次只能做一件事,例如添加客户记录,添加地址等。如何进行批量操作?
您可以说只是从Silverlight客户端添加相关记录并调用SubmitChanges()
方法。但是,这很难对服务器端进行验证,因为一次只能添加/更新/删除某些记录组。例如。在上面的示例中,单独添加的Address
记录在此系统中无效。
另一个例子是Renew
,它会更新Customer
记录并添加Renewal
。这些操作无法单独执行。
感谢您的帮助, Kurren
编辑:服务器端验证需要检查批处理中的正确操作是否已发生。例如。从上面的示例中我们Renew
然后应该创建Renewal
并且应该更新Customer
(一个没有另一个无效)。
答案 0 :(得分:0)
我可能在这里遗漏了一些内容,但是您更新一批实体的方式与执行单个实体的方式相同:即对您的上下文执行所有操作,然后在该上下文中调用SubmitChanges。在服务器上,将根据您提交的所有更改调用类型的插入/删除/更新方法。
我们在Silverlight中使用RIA / EF来做到这一点。如果您只是在客户端上下文(带图表)或100中创建单个实体并不重要,因为只要您提交这些更改,就会对该上下文的完整变更集进行操作。
编辑:如果在适当的属性上使用Required
和Composition
属性设置实体元数据失败,您还可以使用DomainService.ChangeSet对象检查已提交的内容并对哪些更改做出决策你想接受与否。