В DDD можно ли выполнять операции CRUD для агрегатных объектов в изоляции от AR? - PullRequest
0 голосов
/ 26 апреля 2020

Допустим, у меня есть сущность Product, свойство которой называется Brand. Бренд - это сама сущность (а не объект ценности, так как он должен сохраняться и поддерживаться отдельно).

Я хочу иметь возможность создавать, обновлять или удалять бренды на отдельном экране пользовательского интерфейса. Затем при создании или обновлении продуктов назначьте подходящую марку через раскрывающийся список.

Какая из двух вышеупомянутых сущностей может быть совокупностью root (если не обе из них)? И если один должен быть AR, а другой - зависимым объектом, как я могу выполнить операцию CRUD над ними в изоляции от другого?

В общем, как можно смоделировать этот сценарий?

1 Ответ

0 голосов
/ 27 апреля 2020

Назначение совокупных корней во многом зависит от моделируемого домена. Как утверждает ваш вопрос, «Бренд - это сама сущность» , и вы хотите отредактировать его "... на отдельном экране пользовательского интерфейса" , а также хотите ". .. выполнить операцию CRUD на ней изолированно ". Это сильные намеки на то, что Бренд представляет собой совокупность root вместе с Продуктом .

Бренд является собственностью другого агрегата, Продукта. Рекомендуемый способ ссылки на один агрегат из другого - ссылка по идентификатору вместо хранения прямых ссылок (см. Этот ответ по другим причинам ссылки на агрегаты по id). Следовательно, ваш Продукт может объявить свой бренд с помощью поля «Идентификатор бренда», уникальный идентификатор которого ссылается на соответствующий бренд, что позволяет редактировать продукт и бренд по отдельности. Хотя экран редактирования вашего бренда может добавлять новые бренды, отредактируйте существующие, выбрав их с уникальным идентификатором.

...