我有以下实体(示例):
Book
Author
Book
实体也是一个聚合,因为它与一个或多个Author
相关联。现在我遇到了如何从repo中获取此聚合的问题。我有以下情况 - 我也需要照顾性能:
Book
个。无需提取Author
s。Books
个Author
个名称。显然,我们需要获取Book
s和相关Author
s的汇总。Book
个作者 count 。与(2)类似,除了我不想从回购中获取Author
,只是计数。那么我的存储库应该如何?具体问题:
findBooks
和findBooksWithAuthors
以及findBooksWithAuthorsCount
等方法吗?但这会导致大量的方法,因为我们的实体之间有很多关系。findBooks
中拥有loadAuthors
然后AuthorsRepo
,即不进行加入,直到遇到某些性能问题,然后进行重构。BookAndAuthors
吗?请注意,这个例子很简单 - 您必须知道我们的模型更丰富,关系更多。
答案 0 :(得分:0)
您是否需要获取此类信息才能在UI上显示?
我建议您将您的读写问题分开,并保持您的存储库界面简单(类似于集合界面)。
看看CQRS,它与DDD配合得非常好,有助于简化您的设计。
进入CQRS后,请记住,CQRS 不一定涉及事件采购。
在你的情况下,我会推荐this article中最简单的方法show,基本上有一个读取服务(可以称之为Finder),它会触发SQL并为你提供你需要的任何UI的DTO / Map。