如果用户模型本身是聚合根,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个选项,不确定哪个是正确的。
- CreatedBy 仅包含用户 ID。 (
public int CreatedBy ...
)
- CreatedBy 是一个用户对象。 (
public User CreatedBy ...
)
创建一个值对象调用元数据如下
class MetaData
{
public int CreatedBy ...
public string CreatorName ...
public string CreatorStatus ...
public DateTime CreatedDate ...
}
创建/保存产品时,
- 对于选项1,我只需要获取当前用户的UserID并设置
到我的产品型号
- 对于选项 2,我将获取当前用户的 UserID 并调用 User
获取此用户并设置为我的产品模型的存储库
- 对于选项 3,我将获取当前用户的 UserID,构造
MetaData 对象并设置为我的产品模型。
我不确定哪种方法是正确的,希望到目前为止我对 DDD 的理解是正确的...
Product
和 User
具有 域关系 即: "a product is (always?) created by an user" 。这可以通过使产品引用用户来实现,最简单的方法是让产品拥有用户 ID。
聚合不应重叠,它们是自治的,这就是为什么您只使用 UserId 而不是整个用户。如果您需要组合不同的聚合,那么这暗示有第三个聚合潜伏在周围,但您还看不到它。
我刚刚开始了一个项目来学习更多关于 DDD 的知识。 这可能是一个愚蠢的问题,但只是想了解更多有关 DDD 的信息。
例如,如果我这里有 2 个域模型,产品和用户,两者都是聚合根。在产品中,我有其他状态/属性和 2 个状态,称为 "CreatedBy" 和 "CreatedDate",假设领域专家告诉我 和 "CreatedBy and Date" 都是业务的一部分域。 createdby 必须与 User 模型相关。我在考虑3个选项,不确定哪个是正确的。
- CreatedBy 仅包含用户 ID。 (
public int CreatedBy ...
) - CreatedBy 是一个用户对象。 (
public User CreatedBy ...
) 创建一个值对象调用元数据如下
class MetaData { public int CreatedBy ... public string CreatorName ... public string CreatorStatus ... public DateTime CreatedDate ... }
创建/保存产品时,
- 对于选项1,我只需要获取当前用户的UserID并设置 到我的产品型号
- 对于选项 2,我将获取当前用户的 UserID 并调用 User 获取此用户并设置为我的产品模型的存储库
- 对于选项 3,我将获取当前用户的 UserID,构造
MetaData 对象并设置为我的产品模型。
我不确定哪种方法是正确的,希望到目前为止我对 DDD 的理解是正确的...
Product
和 User
具有 域关系 即: "a product is (always?) created by an user" 。这可以通过使产品引用用户来实现,最简单的方法是让产品拥有用户 ID。
聚合不应重叠,它们是自治的,这就是为什么您只使用 UserId 而不是整个用户。如果您需要组合不同的聚合,那么这暗示有第三个聚合潜伏在周围,但您还看不到它。