Domain driven design 聚合模型应该包含元数据吗?

Domain driven design 聚合模型应该包含元数据吗?,domain-driven-design,cqrs,event-sourcing,Domain Driven Design,Cqrs,Event Sourcing,我想澄清的是,聚合模型应该是什么样子的。 我有几个事件,其中包含的数据永远不会用于验证 例如,元数据,如触发操作审核的用户id、相关性id可观察性、标签/标志 它们将在命令中接收,并作为事件的属性发送出去。它不会丢失,因为每个事件都是持久的。这很清楚 但是聚合对象是否应该包含这些值? 投影将拥有并显示它们。在我看来,把它们放在一起是没有意义的 或者,确实如此。如果要创建快照,则需要所有事件的属性 感谢您的建议。聚合只应包含保持一致性所需的信息。如果您的业务规则需要用户id,则该信息应保留在聚合中

我想澄清的是,聚合模型应该是什么样子的。 我有几个事件,其中包含的数据永远不会用于验证

例如,元数据,如触发操作审核的用户id、相关性id可观察性、标签/标志

它们将在命令中接收,并作为事件的属性发送出去。它不会丢失,因为每个事件都是持久的。这很清楚

但是聚合对象是否应该包含这些值? 投影将拥有并显示它们。在我看来,把它们放在一起是没有意义的

或者,确实如此。如果要创建快照,则需要所有事件的属性


感谢您的建议。

聚合只应包含保持一致性所需的信息。如果您的业务规则需要用户id,则该信息应保留在聚合中。否则,就不应该这样。

我同意你的观点,并说,除非用于验证,否则将它们合并在一起是没有意义的。如何存储聚合?它们是事件源的,不是吗?是的,它们是-正如我所写的,每个事件都是持久化的。如果你的聚合是事件源的,那么你的聚合不需要这些值。更重要的是,验证所需的所有值都只是聚合的内部状态。因此,聚合的公共API可以只是它们的行为方法