Вот мой взгляд на то, как я могу решить эту проблему так, как я сейчас практикую DDD.
Если вы редактируете что-то, что требует добавления и удаления тегов, таких как сообщение, то теги могут быть объектами, но, возможно, они могут быть объектами значения и загружаться и сохраняться вместе с сообщением в любом случае. Лично я склонен отдавать предпочтение объектам-значениям, если только объект не нуждается в модификации, но я понимаю, что существует разница между объектом-объектом, моделируемым как «моментальные снимки» только для чтения, и объектами фактических значений, которые не имеют идентичности. Сложность в том, что иногда то, что вы обычно считаете ключом, может быть частью объекта значения, если он не используется в качестве идентификатора в этом контексте, и я думаю, что теги попадают в эту категорию.
Если вы редактируете сами теги, то это, вероятно, отдельный ограниченный контекст или, по крайней мере, отдельный агрегат, в котором сами теги являются корнем агрегата и сохраняются в хранилище. Обратите внимание, что класс сущности, представляющий теги в этом контексте, не обязательно должен быть тем же классом сущности для тегов, используемых в агрегате Post.
Если в вашем списке доступны теги на дисплее только для чтения, например, для предоставления списка выбора, то это, вероятно, список объектов-значений. Эти объекты-значения могут, но не обязательно, находиться в модели предметной области, поскольку они в основном касаются поддержки пользовательского интерфейса, а не реального домена.
Пожалуйста, не стесняйтесь, если у кого-нибудь есть мысли о том, почему мой взгляд на это может быть неправильным, но я так и делал.