gpt4 book ai didi

cqrs - 乐观锁定和聚合根的内部实体

转载 作者:行者123 更新时间:2023-12-01 22:07:08 25 4
gpt4 key购买 nike

假设我有聚合根 Picture 和内部实体 ShapePicture 包含形状列表。

Shape 将保留为 Picture 聚合根的内部实体,因为 Picture 在多个 Shape 之间定义了一些规则> 实例。假设当 Picture 是只读的并且 Picture 可能不包含两个 Shape 时,您不能分配新的 Shape相同的颜色。定义了这些规则后,聚合根 - 了解其所有 Shape - 现在可以一致地验证规则。

为了不破坏 Demeter 法则,我总是通过 Picture 访问 Shape。我的问题与使用聚合版本控制的乐观锁定有关。如果我通过 Picture 根聚合更新 Shape 的颜色,我是增加聚合根的版本 - Picture 还是只增加 形状 ?

我的假设是 - 只有 Shape,因为 oposite 会阻止并行更新一个 Picture 的多个 Shapes

但是,如果在 Shape 更新期间,Picture 被设置为只读模式怎么办?

感谢您的建议。

最佳答案

在使用乐观锁定机制时,每次聚合发生变化时,它都应该增加版本号。聚合在其聚合根或任何嵌套实体发生变化时发生变化。当发生冲突时,意味着之前更快的状态突变已经提交并且无法回滚。这也意味着后来的状态突变是基于旧数据的,必须重新执行。

但是,框架应该通过重新执行命令(加载、执行、持久化)来透明地重试此冲突。 Aggregate 不应该关心这种情况,领域逻辑应该是一样的。换句话说,在发生冲突的情况下,客户端甚至不会注意到 HTTP 响应(或其他)应该是相同的,可能会慢一点。

关于cqrs - 乐观锁定和聚合根的内部实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50873959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com