HTML   发布时间:2022-04-14  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了domain-driven-design – 如何在两个聚合根目录中建立多对一的排序顺序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
采用 Effective Aggregate Design中提出的具有多个版本的产品的域.在本文中,Vaughn得出的结论是,Product和Release都应该是它们自己的聚合根.

现在假设我们添加了一个功能

>作为一名发布经理,我希望能够对发布进行排序,这样我就可以创建时间表,为用户推出更大的史诗

我不是具有特定需求的PM,但他们希望能够在UI中对发布进行排序似乎是合理的.

我不确定这应该如何运作.每个Release都有自然的订单属性,但重新排序将涉及在同一个交易中更改多个聚合.另一方面,如果该信息存储在Product聚合中,则必须有一个类似product.setRelaseOrder(ReleasEID [])的方法,这似乎是一个奇怪的数据存储在与Releases完全不同的地方.更糟糕的是,添加一个版本将再次涉及修改两个不同的聚合!我们还能做什么? ProductReleaseSortOrder可以是它自己的聚合,但这听起来完全荒谬!

那么该怎么办?目前我仍然倾向于let-product-manage-it选项,但这里的正确性是什么?

解决方法

因此,产品和发布都​​是AR. Release通过AggregatEID与Product关联.您想获得按订单排序的给定产品的所有版本列表吗?

由于排序是聚合的属性,因此它应该在Product上设置,但Release也是AR,您不应该访问Product AR中的Release存储库(每个AR都应该有自己的存储库).

我只需创建一个ReleaseQueryservice,它接受productId和order参数并调用ReleaseRepository.loadorderedReleasesForProduct(productId,order).

我也会虑分离上下文,也许发布演示文稿的模型应该在另一个上下文中?在示例中,仅用于查询的其他AR ProductReleases.

大佬总结

以上是大佬教程为你收集整理的domain-driven-design – 如何在两个聚合根目录中建立多对一的排序顺序全部内容,希望文章能够帮你解决domain-driven-design – 如何在两个聚合根目录中建立多对一的排序顺序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。