汇总根目录和存储库

肢端炎

我目前正在尝试发现聚合根及其与存储库之间关系的想法

给出以下域实体:

public class Country {

    public string Name { get; set; }
    public ICollection<City> Cities { get; set; }

}

public class City {

    public string Name { get; set; }

}

我猜我正确地将国家/地区标识城市总根因为在我的域中,不应有不在国家/地区内的任何城市。只能通过一个国家/地区将一个新城市添加到数据存储中,如果删除了一个国家/地区,则里面的每个城市也都应被移除。

现在,这样的国家/地区存储库可能是什么样子?以及如何在国家聚合根是什么样子?域中是否有CityRepository(即使没有相关国家,这也允许我向数据库中添加城市!)?并且国家内部是否存在CountryRepository(以某种方式该国家需要填充其城市?还是这是存储库的工作?)

务实

我认为您掌握了它。在您描述的情况下:

因为在我的领域内,不应有一个国家/地区以外的任何城市。只能通过一个国家/地区将新城市添加到数据存储中,如果删除了一个国家/地区,则也应移除其中的每个城市

您是正确的,国家是总根。您所在的国家/地区实体代码是汇总根,它是正确的!您不想要城市回购。您所在国家/地区的repo并不会真正根据相关的价值对象(在这种情况下为城市)或实体而变化,因此在这种情况下,您的基本Crud API如下所示:

public class CountryRepo {
    public Country GetCountry(String name);
    public Country SaveCourntry(Country country);
    public void DeleteCourntry(Country country);
    ...etc...
}

触摸最后一个问题:

并且在国家内部是否存在CountryRepository(以某种方式该国家需要填充其城市?还是这是存储库的工作?)

您的存储库将处理活动(实体的处理)。可以通过维护集合在实体中完成城市填充。您可以在“国家/地区”实体上添加城市的方法:

public void AddCity(City city)
{
    this.Cities.Add(city);
}

删除将是类似的,那么您可以使用您的存储库来保存国家/地区,该国家/地区应保留相应的城市集合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何移动git存储库的根目录?

是否有MSBuild属性提供存储库根目录?

在main中将main从存储库根目录移出

汇总DDD中的根和存储库

根目录外的存储路径

如何将存储库的根目录设置到另一个目录

如何获取当前目录相对于git存储库根目录的路径?

flake8 --diff无法从存储库根目录以外的目录运行

如何列出MarkLogic数据库中的所有根目录和子目录?

Node.js package.json是否需要位于存储库的根目录?

svn-获取在存储库根目录中创建的文件夹的历史记录

如何使用SBT设置常春藤共享存储库根目录?

git status 的 Git 别名列出了相对于存储库根目录的文件

如何使用git ignore忽略非dotfiles(所有非隐藏目录,在我的存储库的根目录中)?

容器化数据库文件路径和根目录未知

DDD,汇总和存储库

我的 gitignore 文件应该是什么样的,只在存储库根目录中添加 git add -A 文件

当前目录,父目录和根目录的路径

包含 git 子模块和父存储库的单个目录

制作节点项目目录和SVN存储库

如何将目录标记为库根目录?

根目录和基本目录有什么区别?

调整根目录和主目录的大小

递归地将父节点的标题存储到根目录

Firebase将数据存储到根目录中

如何为目录和目录外的文件创建git存储库?

Silex-如何访问我的Web根目录和应用程序根目录

Android Studio:在项目根目录之外添加库

数据库无法在Wordpress主题的根目录下运行