При следовании модели, управляемой доменом (DDD), правильно ли для корневого агрегата хранить ссылку на внутренний объект, который оказывается корневым объектом в отдельном агрегате?
Я считаю, что это не правильно, в основном из-за этого правила в синей книге :
Ничто за пределами границы AGGREGATE не может содержать ссылку на что-либо внутри, кроме корневого ENTITY. Корневая сущность может передавать ссылки на внутренние сущности другим объектам, но эти объекты могут использовать их только временно, и они могут не удерживать ссылку. Корень может передать копию ЗНАЧЕНИЯ ОБЪЕКТА другому объекту, и не имеет значения, что с ним происходит, потому что это просто ЗНАЧЕНИЕ и больше не будет иметь никакого отношения к AGGREGATE.
Если корневой агрегат содержит ссылку на другой корневой агрегат, граница первого нарушается, и вся концепция агрегата искажается, поэтому я считаю, что если корневому агрегату нужно хранить ссылку на другой корневой агрегат, то мне нужно создать другую сущность, которая, вероятно, будет совместно использовать некоторые из тех же членов, что и другая корневая сущность, но не будет иметь глобальной идентичности, как говорится в этом другом правиле в книге:
Коренные субъекты имеют глобальную идентичность. СУЩНОСТИ внутри границы имеют локальную идентичность, уникальную только в пределах АГРЕГАТА.
Я полагаю, что это будет правильный путь, но, поскольку он кажется повторяющимся и избыточным (если его исключить из контекста DDD, с чистым ООП), я прошу некоторую обратную связь.