帖子和评论应该在帖子聚合中还是应该是它们自己的聚合?

Mat*_*caj 5 asp.net-mvc blogs domain-driven-design aggregate repository

考虑带有对象Post和的典型博客Comment

对于我一直在构建的 DDD 演示示例,我(直到现在)发现实体PostComment都适用于同一个聚合——Post聚合。但现在我不太确定..

在我的控制器,我发现,像你所期望的,我需要添加和删除CommentsPosts。使用我当前的模型,我不会跟踪Comment全局的身份(就像蓝皮书建议的那样)。您可能期望我删除 a 的操作Comment可能如下所示:

public ActionResult DeleteComment(int postID, int commentID)
Run Code Online (Sandbox Code Playgroud)

很显然,我需要Post的ID从资源库中,并标识为特定检索CommentPost,我想删除。

我的问题是DeleteComment(动作的主体:

可以通过Post查询机制遍历以获取Comment删除吗?像这样:

var comment = this._postRepo.WithID(postID).Comments
    .SingleOrDefault(c => c.ID == commentID);
this._postRepo.Delete(comment);
return RedirectToAction("detail", new { id = postID });
Run Code Online (Sandbox Code Playgroud)

..或者我应该Comment从类似于这个的回购中选择?:

var comment = this._postRepo.CommentWithID(commentID)
Run Code Online (Sandbox Code Playgroud)

..或者:

var comment = this._postRepo.CommentWithID(postID, commentID)
Run Code Online (Sandbox Code Playgroud)

上面的两个例子可能看起来有点傻,因为Post如果我可以Comment全局跟踪,我不应该需要ID 。但是,如果我正在跟踪Comment全球,它不应该有自己的聚合,然后是正确的时间PostComment似乎一起去吗?

小智 1

问题是评论在帖子聚合之外是否具有任何意义。恕我直言,没有任何评论,所以我认为您不应该将评论移至其自己的聚合中。