Я все еще пытаюсь понять DDD. Скажем, у меня есть неизменный VO PresentationSlide
. Поскольку он является неизменным, его можно легко разделить и использовать разными сущностями. Но что произойдет, если я попытаюсь сопоставить это с базой данных. В EntityFramework я мог бы моделировать PresentationSlide
как ComplexType
, что означает, что свойства общего PresentationSlide
сопоставляются с таблицами, используя его. Это прекрасно, но слайд может быть довольно большим, и поэтому я теряю пространство, если он использовал/ссылку несколько раз.Удалить сиротские общие объекты ValueObjects?
В качестве альтернативного подхода я мог бы сопоставить PresentationSlide
с отдельной таблицей и ссылаться на нее. Потому что это неизменное, это также должно работать. Но теперь, если я изменяю Presentation
, мне нужно скопировать содержимое старого PresentationSlide
и создать новый экземпляр. Если будет много изменений, в моей базе скоро появится большое количество сирот PresentationSlides
.
Разве это не проблема? Есть ли решение? Должен ли я выполнять специальный журнал «Очистка осиротевших представлений-задач»?
Вы всегда можете выполнять очистку на основе таких событий, как 'PresentationChanged', или вы можете выполнять периодические очистки. Тем не менее, иногда может быть слишком дорого использовать VO, хотя нет никакой реальной потребности в идентификации. Мне кажется естественным, что 'PresentationSlide' будет изменчивым. Как часто вы действительно делитесь «PresentationSlide» между презентациями или даже повторно используете один и тот же слайд в одном? – plalx
Я кое-что не понимаю. Если ** shared ** 'PresentationSlide' означает, что когда пользователь создает новую' Презентацию', он может выбрать для добавления существующего 'PresentationSlide' в' Presentation' вместо добавления нового. Но тогда вы должны оставаться сиротой 'PresentationSlides' для будущих новых/модифицированных' Презентаций'. – jlvaquero