DDD подчеркивает вездесущий язык, и многие модельные вопросы, подобные этим, будут получать ответ прямо из этого языка. Перво-наперво, если есть агрегат, который содержит объект значения, есть большая вероятность, что объект значения не создан пользователем напрямую. Таким образом, фабрика, которая создает объект значения, живет в API агрегатов. Объект (ы) значения могут даже быть получены непосредственно из агрегатного состояния, а не из любого прямого вызова метода. В этом случае вы хотите просто отбросить совокупность и создать новую? Это может иметь смысл в зависимости от вашего UL .
В некоторых случаях, например, если у вас есть объекты неизменяемых значений (на основе вашего UL), вы можете просто добавить новую запись в запись журнала которая "переворачивает" старую запись . Примером этого могут быть банковские счета и транзакции. Если банковские счета представляют собой совокупные корни, а транзакции являются объектами стоимости. Если транзакция ошибочно введена, вы можете просто написать обратную транзакцию, чтобы аннулировать ее.
Вполне возможно, что вы хотите обновить объект значения, но это должно иметь смысл в вашем UL, и его реализация также должна быть вокруг вашего UL. Например, если у вас есть приложение планирования, а агрегат root - это расписание человека, а объектами значения являются собрания. Если пользователь ошибочно входит в собрание, ваша совокупность root должна сделать недействительным старое собрание (пометить флажок, отметить его отмененное состояние и т. Д. c) и создать новое. Эти действия соответствуют UL для вашего приложения планирования. То же самое, что вы называете «обновлением записи» выше.