DDD:关于存储库/域边界的混淆

时间:2013-06-16 23:44:20

标签: domain-driven-design repository-pattern

我的域名包含产品,部门,类别,制造商,DailySales,HourlySales。

我有一个ProductRepository,便于存储/检索存储中的产品。

我有一个DepartmentAndClass存储库,它有助于存储/检索部门和类,以及添加和删除这些部门和类中的产品。

我还有一个DailySales存储库,用于从多个分组中检索有关每日销售的统计信息。即...

DailySales.GetSalesByDepartment(dateTime)
DailySales.GetSalesByClass(dateTime)
DailySales.GetSalesByHour(dateTime)

将这些销售跟踪方法放在他们自己的存储库中是否正确?我是在正确的轨道上吗?

2 个答案:

答案 0 :(得分:1)

由于域名依赖于上下文,因此某些答案比其他答案更难。但是,我会在Query方面对统计数据进行统计。您可能不希望动态计算这些统计信息,因为您将对数据库进行一些繁重的处理。通常情况下,统计信息应该非规范化,以便快速访问,只需要过滤。

如果您还没有这样做,可能需要查看CQRS。

答案 1 :(得分:1)

  

虽然大多数查询都返回一个对象或一组对象,但它也符合概念,以返回某些类型的汇总计算,例如对象计数,或模型预期的数值属性的总和计数的。

    Eric Evans - Domain-Driven Design

这可能会被视为read model。这些日常销售对象是否在任何域模型行为中使用?任何业务逻辑都依赖于它们吗?如果没有,最好将其分成不同的阅读模型 - 此时您将迈出第一步CQRS