如何使用Breeze.Web Api.ContentProvider应用DDD?

时间:2013-08-26 13:39:14

标签: entity-framework domain-driven-design breeze

我在客户端上使用breeze.js,在服务器上使用Breeze.WebApi。 我使用方法和域服务构建我的EF POCO实体。服务器上运行了一些后台进程,可以正常使用业务域。

问题是我不确定在使用EFContextProvider在服务器上保存客户端更改时如何使用域方法和服务?

例如: 如果客户端添加了新的任务并指定此新任务应为每个现有的 Invoice (breeze SaveOptions.Tag)生成新的操作,那么域服务AddActionsToInvoices应该被调用以向现有发票添加必要的操作。最后,应在同一事务中保存新任务和所有新操作。

通常,为了能够使用域我需要确保在调用域方法时完全获取聚合根,并且所有更改都在最后保留。

1 个答案:

答案 0 :(得分:0)

这是一个非常开放的问题。我想我理解你的一般观点是,至少一些保存不仅仅是在数据库中存储更改的数据。它们本身就是业务流程,恰好也可以保存数据。

您可以尝试通过单个“SaveChanges”Web API方法运行这些。但这感觉不对。很快你的SaveChanges方法成为帮助方法的巨大调度员。

您是否看过 "named saves" ?该功能专为听起来像您的场景而设计。我认为它会发送一个“标记”,并尝试根据标记值调度到适当的服务器端方法。