我在客户端上使用breeze.js,在服务器上使用Breeze.WebApi。 我使用方法和域服务构建我的EF POCO实体。服务器上运行了一些后台进程,可以正常使用业务域。
问题是我不确定在使用EFContextProvider在服务器上保存客户端更改时如何使用域方法和服务?
例如: 如果客户端添加了新的任务并指定此新任务应为每个现有的 Invoice (breeze SaveOptions.Tag)生成新的操作,那么域服务AddActionsToInvoices应该被调用以向现有发票添加必要的操作。最后,应在同一事务中保存新任务和所有新操作。
通常,为了能够使用域我需要确保在调用域方法时完全获取聚合根,并且所有更改都在最后保留。
答案 0 :(得分:0)
这是一个非常开放的问题。我想我理解你的一般观点是,至少一些保存不仅仅是在数据库中存储更改的数据。它们本身就是业务流程,恰好也可以保存数据。
您可以尝试通过单个“SaveChanges”Web API方法运行这些。但这感觉不对。很快你的SaveChanges
方法成为帮助方法的巨大调度员。
您是否看过 "named saves" ?该功能专为听起来像您的场景而设计。我认为它会发送一个“标记”,并尝试根据标记值调度到适当的服务器端方法。