【发布时间】:2018-11-27 22:19:51
【问题描述】:
DDD 菜鸟在这里。假设我们有一个订单的域聚合(例如MS DDD Article)。使用此示例,我们要查询包含特定商品的所有订单。此外,我们对订单或项目中的所有内容并不真正感兴趣。只需 orderId、日期和项目名称就足以显示回用户/响应 API。正在努力解决以下问题:
- 存储库(返回域对象)是否返回完整(即所有属性)匹配订单及其所有项目,然后域对象/服务必须过滤不感兴趣的项目?似乎效率很低,并且没有利用我们的持久性 (SQL) 引擎功能来缩小搜索范围。此外,此后续过滤将更改域对象的行为(例如订单状态及其总数),如果调用者使用此订单的数据/行为,则可能会导致副作用。
- 或者存储库是否返回某种 DTO,它只具有调用者所需的数据属性?这似乎很有效,除了随着时间的推移,这个 DTO 列表可以增长到数百个满足系统中某些特定需求的类。看起来很丑。
这些担忧是否有效和/或是否有更好的方法?
【问题讨论】: