如果用户模型本身是聚合根,CreatedBy 是否应该只包含用户 ID?

Should CreatedBy contain only user id if User model is an aggregate root itself?

我刚刚开始了一个项目来学习更多关于 DDD 的知识。 这可能是一个愚蠢的问题,但只是想了解更多有关 DDD 的信息。

例如,如果我这里有 2 个域模型,产品和用户,两者都是聚合根。在产品中,我有其他状态/属性和 2 个状态,称为 "CreatedBy" 和 "CreatedDate",假设领域专家告诉我 和 "CreatedBy and Date" 都是业务的一部分域。 createdby 必须与 User 模型相关。我在考虑3个选项,不确定哪个是正确的。

  1. CreatedBy 仅包含用户 ID。 (public int CreatedBy ...)
  2. CreatedBy 是一个用户对象。 (public User CreatedBy ...)
  3. 创建一个值对象调用元数据如下

    class MetaData 
    { 
         public int CreatedBy ...
         public string CreatorName ...
         public string CreatorStatus ...
         public DateTime CreatedDate ...
    }
    

创建/保存产品时,

我不确定哪种方法是正确的,希望到目前为止我对 DDD 的理解是正确的...

ProductUser 具有 域关系 即: "a product is (always?) created by an user" 。这可以通过使产品引用用户来实现,最简单的方法是让产品拥有用户 ID。

聚合不应重叠,它们是自治的,这就是为什么您只使用 UserId 而不是整个用户。如果您需要组合不同的聚合,那么这暗示有第三个聚合潜伏在周围,但您还看不到它。