【发布时间】:2011-11-09 15:20:37
【问题描述】:
这是我目前对DDD的理解:
- 严格的存储库模式应该只实现 get()、delete() 和 create(),也许还有 get() 的变体,人们可以在其中搜索或检索整个集合
- 每个聚合根通常都有一个存储库
(根据研究,我知道这些不是普遍接受的规范)
这里的问题是如何实现涉及许多聚合根的复杂查询。例如,我们有两个聚合根 - 产品和用户。如果我正在创建一个列出用户购买了哪些产品的页面,那么我就会有一个跨越用户聚合和产品聚合的查询。
这个查询应该如何实现?
我现在所做的实际上是为此查询和具有相关功能的查询建立一个存储库(有些人会不同意并说存储库不是查询层)。
仅使用产品和用户的存储库,获取所有记录并在内存中执行所有操作(这听起来不对)
让查询(LINQ 或 SQL)位于服务内部,根本不使用与聚合关联的存储库。
还有其他方法吗?
【问题讨论】:
标签: design-patterns domain-driven-design repository