Откуда логика c go в DDD Агрегат для изменения дочерней сущности Агрегата Root? - PullRequest
0 голосов
/ 12 марта 2020

Я использую пример Microsoft DDD Microservices в качестве основы моего вопроса (https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/microservice-domain-model).

Я понимаю, что все внешние запросы на изменения в агрегате проходят через root (в данном примере Заказ). Скажем, я хочу изменить количество единиц в OrderItem, есть ли у меня операция с Order под названием «ModifyOrderItem», которая затем получит OrderItem и изменит его? Что нужно сделать в обработчике команды «ModifyOrderItem» по сравнению с операцией?

1 Ответ

0 голосов
/ 13 марта 2020

Этот способ мышления сталкивается с DDD образом мышления. Вы должны спросить о том, какую информацию вам нужно изменить # элементов, не нарушая систему. Существует два типа:

  1. Данные для отклонения / принятия модификации. Это данные, необходимые для того, чтобы сказать «Вы не можете этого сделать» или «Everithing в порядке. Go вкл.» *

  2. Данные, необходимые для пересчета нового состояния системы, чтобы поддерживать его согласованность .

Как только вы запомните все эти данные; Вы должны думать о собственности. Если данные являются только частью OrderItem, то здесь OrderItem является вашей совокупностью. Если есть также данные, которые необходимо проверить / изменить, которые не принадлежат OrderItem, то вам нужно смоделировать (или повторно использовать) агрегат с OrderItem и остальными данными (которые могут быть другими сущностями или объектами значений) и использовать это агрегат для применения операции.

...