pro-dev
@pro-dev

Межагрегатные связи. Как правильно менять ID?

Вникаю сильно в DDD. Вопрос связан с межагрегатными связями. Первое правило Межагрегатных связей заключается в том, что агрегаты всегда ссылаются друг на друга через уникальный идентификатор (например, первичный ключ) вместо прямых ссылок на объекты. Это понятно, но как быть, если мы пошли немного иначе?

Например, есть Мероприятия. У мероприятия есть участники. В Контексте участников мы создаем Member. ID Генерируется используя UUID. Проходит какое-то время, создается новый функционал. Теперь участникам можно использовать личные кабинеты. Они регистрируются в контексте Auth. Там у них тоже генерируется этот ID. Отлично. Но как теперь нам связать эти два контекста. Исходя из логики нам нужно у Memer (участника мероприятия) заменить ID на тот, который был сгенерирован в Auth. Я бы мог поступить следующим образом:

1. В Member добавляем метод changeId(Id $id)
2. Получаем ID из Auth и с помощью метода changeId(Id $id) привязываем к аккаунту. Теперь каждый Member может иметь доступ к своему аккаунту.

Вроде бы всё просто, но у меня возникает вопрос о правильности. Ведь DDD это понятный язык, а метод changeId() не особо понятно. Да и вообще этот метод какой-то лишний. Другое дело если пользователь сам заходит в Event и регистрируется как участник. В таком случае мы можем легко иметь связь без всяких дополнительных методов. Просто присваивая ID из Auth. Но как идти от обратного?) Подскажите, пожалуйста) Вопрос, наверное, простой, но хочу делать правильно!
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
sarapinit
@sarapinit
Точу водой камень
Что-то не то. Уникальный идентификатор сущности не должен меняться. Я бы подумал о создании Member в одном месте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы