在一个模型 DDD .NET Core 中映射两个聚合

Map two aggregates inside one Model DDD .NET Core

我是域驱动设计主题的新手,并且使用 .NET Core 和 Angular 7 创建了一个应用程序。

我有这种情况:

我有一个包含实体和聚合的领域层,我有两个聚合:Post,评论

他们每个人都有自己的Repository和自己的Model,并会分别保存在数据库中Infrastructure层的两个表中。

当我想在前端显示 Post 时,我遇到了问题。我不想发送两个请求来获取 post 然后再发送评论。相反,我想在一个请求中同时获得它们,这意味着我的聚合应该相互连接,或者我应该创建新的聚合并将两个模型映射到内部。

最佳做法是什么?我应该创建一个名为 PublicPost 的新模型并将两个对象映射到内部吗?有没有办法使用 DI 和 AutoMapper 动态实现?谢谢

您似乎只是在从每个实体中创建一个 "aggregate"。这不是它应该如何工作的。您的聚合是域模型。其他相关实体只能通过该聚合访问和使用。

在这种情况下。您的总数是 PostComment 不是 聚合。它属于 Post,因此是 Post 集合的一部分。换句话说,在你的 Post 模型上,你应该有像这样的方法:AddCommentUpdateCommentDeleteComment,你会公开一个 Comments read-仅列出 属性 以获取所有评论。

即使 Comment 本身就是一个聚合(即它可以完全独立存在,不与任何其他事物相关联),那么您将进入有界上下文的领域。 Comment 聚合在 Post 的上下文中与 "comment" 不同(即使它们最终归结为相同的实体类型。您需要一个域,其中 Post 是聚合,Comment 通过它和一个完全独立的域进行管理,其中 Comment 本身就是一个聚合,与 Post.

完全无关