Единственный случай, когда мне удалось найти соотношение 1: 1 между агрегатными корнями, - это когда агрегатные корни с обеих сторон взаимосвязи управляются разными доменами. Они должны совместно использовать один и тот же первичный ключ , и поэтому, если они оба управляются одним и тем же доменом, то они по определению являются частями одного совокупного корня . Я думаю, что вам нужно подойти к этому вопросу под другим углом:
- Объект
User
будет существовать только для этого приложения?
- Ожидаете ли вы, что так будет всегда?
Если User
- это концепция, которая полностью находится внутри этой области, то нет никаких причин иметь совокупный корень UserSettings
, который имеет отношение 1: 1 с User
; вы просто делаете User.Settings
способ получить UserSettings
для этого User
. (И, конечно, это устраняет необходимость в хранилище - UserRepository
становится обязанностью гидратировать UserSettings
, когда он гидратирует все остальное на User
.)
Но, если User
будет в конечном итоге информировать сеансы для нескольких доменов, то User
должен представлять свой собственный домен , услугами которого будет пользоваться ваше приложение. Затем вы получаете очень реальную необходимость отделить UserSettings
этого приложения от приложений другого приложения. User
не является определенным для этого приложения, но UserSettings
для этого User
- это.
ПРИМЕЧАНИЕ - В целях отказа от рефакторинга вашего проекта на данный момент , если ответ на вопрос 1 или 2 выше - «нет», то вы должны делает UserSettings
отдельным агрегированным корнем в том же домене, чтобы создать плавный переход, когда вы в конечном итоге переместите User
в свой собственный домен.