Рекомендуемый способ создания агрегированных объектов - PullRequest
0 голосов
/ 27 января 2011

Предположим, у меня есть агрегатное имя " ABCD ", которое является корневым объектом, и другой объект " IJKL " в этом агрегате. Мой вопрос: каков рекомендуемый способ создания сущности IJKL и сохранения в базе данных

1 Ответ

0 голосов
/ 30 января 2011

По самому определению агрегата время жизни IJKL связано со временем жизни ABCD, поэтому вам не следует явно создавать IJKL; вместо этого вы должны вызывать логику на ABCD, которая решит (внутренне), как / когда иметь дело с IJKL (s).

Для новых экземпляров логика создания агрегата должна быть инкапсулирована в фабрике, и эта фабрика будет отвечать за «обновление» экземпляров IJKL вместе с остальной частью агрегата.

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

Если вы постоянно сталкиваетесь с необходимостью напрямую манипулировать IJKL, тогда существует проблема с вашим агрегатом - либо ABCD не является правильным корнем, либо IJKL должен находиться в отдельном агрегате.

...