DDD 更改聚合根 ID
DDD change aggregate root id
在讨论中我得到了以下问题。在银行域中,有一个聚合根,Account,由 Account Number 标识。假设在某个时间点,由于某些原因,银行决定将所有帐户从 8 位数字更改为 12 位数字,并且该帐户可以使用这两个数字访问一年,之后将只使用新数字,这应该如何以DDD方式处理,我想知道它是否会创建一个新的有界上下文
对于一个实体,您总是希望拥有一个技术 ID,即不可变且您的应用控制的 ID (UUID) 属性。自然 id AccountNumber
只是一个值对象。基本上,出于技术原因,在您的应用中仅使用 Id,AccountNumber 只是聚合的另一个 VO/detail。
更改帐号格式不应该创建一个新的有界上下文,它只是一个值对象内部的更改。但是由于更改而遇到的所有问题都源于实现,而不是域建模(除非它是错误的模型:D)。如果您使用的是事件溯源和 CQRS,相对而言,事情应该足够简单。如果你使用的是恢复状态的 ORM,事情会更复杂。
DDD方式意味着你必须理解概念的本质,实际的实现取决于很多事情。
在讨论中我得到了以下问题。在银行域中,有一个聚合根,Account,由 Account Number 标识。假设在某个时间点,由于某些原因,银行决定将所有帐户从 8 位数字更改为 12 位数字,并且该帐户可以使用这两个数字访问一年,之后将只使用新数字,这应该如何以DDD方式处理,我想知道它是否会创建一个新的有界上下文
对于一个实体,您总是希望拥有一个技术 ID,即不可变且您的应用控制的 ID (UUID) 属性。自然 id AccountNumber
只是一个值对象。基本上,出于技术原因,在您的应用中仅使用 Id,AccountNumber 只是聚合的另一个 VO/detail。
更改帐号格式不应该创建一个新的有界上下文,它只是一个值对象内部的更改。但是由于更改而遇到的所有问题都源于实现,而不是域建模(除非它是错误的模型:D)。如果您使用的是事件溯源和 CQRS,相对而言,事情应该足够简单。如果你使用的是恢复状态的 ORM,事情会更复杂。
DDD方式意味着你必须理解概念的本质,实际的实现取决于很多事情。