Aggregate Root ссылается на другие совокупные корни

В настоящее время я много работаю с DDD, и у меня возникла проблема при загрузке / работе с агрегированными корнями из других агрегированных корней.

Для каждого агрегированного корня в моей модели у меня также есть репозиторий. Репозиторий отвечает за обработку операций сохранения для корня.

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

AggregateRoot1 и AggregateRoot2.

[РЕДАКТИРОВАТЬ]

ТЕКУЩЕЕ РЕШЕНИЕ

С помощью Twith2Sugars я придумал следующее решение:

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

public void SomeMethod()
{
    AggregateRoot1 root1 = AggregateRoot1Repository.GetById("someIdentification");
    root1.EntityMember1.AggregateRoot2 = new AggregateRoot2();
    AggregateRoot1Repository.Update(root1);
}

public class AggregateRoot1Repository
{
    public static void Update(AggregateRoot1 root1)
    {
        //Implement some mechanism to detect changes to referenced roots
        AggregateRoot2Repository.HandleReference(root1.EntityMember1, root1.EntityMember1.AggregateRoot2)
    }
}

Это всего лишь простой пример, без Закона Деметры или других лучших принципов / практики включены: -)

Дальнейшие комментарии приветствуются.

27
задан Chris Harrison 2 August 2018 в 08:29
поделиться