【发布时间】:2015-06-02 12:16:53
【问题描述】:
场景
我在查找可能的聚合根和确定正确的根时遇到问题 我的应用程序中的存储库。
场景是这样的:我正在编写一个库应用程序来练习 DDD。该应用程序允许用户显示所有书籍、创建新书籍或编辑现有书籍。一本书只有一个作者和一个出版商。在应用程序中,用户还可以独立显示、创建和编辑作者/出版商。
实施
目前,我正在使用三个不同的存储库——BookRepository、AuthorRepository 和 PublisherRepository——来加载一本书、相关作者和出版商。在我的 ApplicationService 中使用所有三个存储库来创建一本新书。
我不明白的地方
看看这段代码,我觉得我缺少一个聚合根。我想也许 Book 类可能是一个聚合根。这意味着 BookRepository 将加载所有组合的数据(书籍、作者、出版商),这听起来很好。这在加载一本书时效果很好,但是如果我需要显示所有作者并允许用户创建、编辑或删除作者会发生什么?我无法将 Book 类作为聚合根来做到这一点。
问题
如何识别聚合根及其关联的存储库?
如果 BookRepository 确实是聚合根...
-
...从属实体(即作者和出版商)的方法看起来如何(例如 repository.GetBookAuthor、repository.UpdateBookAuthor)?
-
...我如何管理作者/出版商(例如显示所有作者以供编辑)?
【问题讨论】:
标签: c# domain-driven-design aggregate repository-pattern