我有一个名为LeadRepository的存储库,它返回一个名为Lead的模型,该模型是一个人。
我拥有的UI是一个显示以下统计信息的仪表板。他们都是领导者,但处于不同的状态。
总线:52
指定:49
未分配:3
联系:49
未接触:0
我正在使用存储过程来查询数据库。所以我没有使用延迟加载来计算出计数。
我已经考虑过以下两种可能的解决方案,但他们都没有感觉到正确。
使用LeadRepository,但在其上有一个名为GetStats()的方法,它返回一个复杂类型。这与agg root Lead没有任何关联。只是一堆具有不同计数的属性。
创建一个LeadStatsRepository,但这不是一个聚合根,因为它没有id。它只是一组分组的数据。
如果有人有任何建议会很棒。
答案 0 :(得分:3)
存储库用于聚合根。您所追求的是阅读模型和专用查询对象。
答案 1 :(得分:1)
统计信息最好通过服务处理。从埃文斯的DDD,一个好的服务有这些特点:
统计信息与域对象相关,但实际上并不是实体或值对象的一部分。它们可能不是根据其他元素定义的,但它是可能的。没有任何国家有统计数据,即使长期保持这些状态也不是真正的有状态。