DDD изменить совокупный идентификатор корня
В ходе обсуждения я получил следующий вопрос. В банковском домене есть совокупный корень, Account, идентифицируемый по номеру счета. Предположим, что в какой-то момент времени банк решил сменить весь счет с 8 на 12 цифр по некоторым причинам, и счет доступен как с номерами в течение года, так и после этого будет использоваться только новый номер, как это следует делать мне нужно было поработать в DDD, мне было интересно, создаст ли он новый ограниченный контекст
1 ответ
С сущностью вы всегда хотите иметь технический идентификатор, то есть свойство Id (UUID), которое является неизменным и которое контролирует ваше приложение. Естественный идентификатор AccountNumber
это только объект Value. По сути, в вашем приложении по техническим причинам используется только Id, AccountNumber - это просто еще одна VO/ деталь агрегата.
Изменение формата номера счета не должно создавать новый ограниченный контекст, это просто изменение внутри объекта значения. Но все проблемы, возникающие у вас из-за изменений, проистекают из реализации, а не из моделирования предметной области (если это не неправильная модель:D) . Если вы используете Event Sourcing и CQRS, все должно быть достаточно просто, условно говоря. Если вы используете ORM, который восстанавливает состояние, все будет сложнее.
Путь DDD означает, что вы должны понимать природу концепций, фактическая реализация зависит от многих вещей.