Серия простых агрегированных корневых вопросов (Domain Driven Design) - PullRequest
2 голосов
/ 17 мая 2010

У меня есть несколько (надеюсь) простых вопросов о совокупных корнях в доменном дизайне:

  1. Можно ли использовать агрегатный корень как свойство другого агрегатного корня?
  2. Можно ли иметь данную сущность внутри двух или более совокупных корней?

Мой последний вопрос немного сложнее. У меня есть веб-сайт, на котором есть несколько сущностей, которые действительно принадлежат совокупному корню «веб-сайта». Это «Новости», «Продукты» и «Пользователи». В базе данных нет таблицы «Веб-сайт», но «Веб-сайт» кажется хорошим совокупным корнем для этих трех объектов. Как это обычно достигается?

Спасибо!

1 Ответ

1 голос
/ 20 мая 2010

Есть ли у вас какие-либо правила согласованности, охватывающие весь веб-сайт (касающиеся нескольких новостных продуктов и пользователей)? Если нет, то эти сущности (новости, продукты, пользователи) являются хорошими кандидатами для того, чтобы вы объединяли свои корни.

Агрегатная основная корневая функция предназначена для обеспечения согласованности и границы семантики транзакции.

Чтобы ответить на ваши вопросы:

  1. Да, все в порядке, пока это упомянутый совокупный корень не изменено во время любой операции содержащий AR. Это связано с границы согласованности: операции, охватывающие несколько агрегаты не гарантируются производить последовательные результаты, чтобы они следует избегать

  2. Нет, юридическое лицо (который не является AR) может быть частью только один агрегат.

...