放置域逻辑以更新聚合根的子项的正确位置在哪里?
直接更新聚合根的子级还是仅通过其聚合根更新是最佳实践吗?例如,哪个是首选:
Order.UpdateOrderLineQuantity(orderLine, quantity);
或
Order.OrderLines[0].UpdateQuantity(quantity);
本部门的任何指导将不胜感激。
Is it a best practice to update children of an aggregate root directly, or only through its aggregate root? For example, which is preferred:
Order.UpdateOrderLineQuantity(orderLine, quantity);
or
Order.OrderLines[0].UpdateQuantity(quantity);
Any guidance in this department would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
聚合根是一个封装相关子对象的对象,因此您应该使用第一种技术。
就像调用者不应该关心订单 ID 是否存储为整数或字节数组一样,他们也不应该关心或知道它是使用
OrderLines
还是HideousLegacyObjects
来存储并操纵订单详细信息。An aggregate root is an object that encapsulates related child objects, so you should use the first technique.
In the same way that callers shouldn't care if Order IDs are stored as integers or byte arrays, they shouldn't care or know whether it uses
OrderLines
orHideousLegacyObjects
to store and manipulate order details.