【发布时间】:2016-04-28 18:00:00
【问题描述】:
我有一个关于实现 DDD 和存储库模式的问题。 我应该修改存储库中的实体吗?
假设我有一个订单并且想将该订单标记为已完成。 在我看来,我有两个选择。
-
1.
var order _orderRepository.GetById(1);
order.Finish();
_orderRepository.Update(order);
...在 Update 调用中将更改保存到数据库中。
2.
var order _orderRepository.GetById(1);
var finishedOrder = _orderRepository.Finish(order);
...在 Finish 调用中将更改保存到数据库中。
使用一种方法比另一种方法有优势吗?这样做的 DDD 方式是什么?
【问题讨论】:
-
第一个是正确的方法。
-
@Jehof 我也这么认为,但为什么我更喜欢第一个而不是另一个呢?
-
因为我认为不是存储库负责将订单标记为已完成。它取决于命令(使用 CQRS 时)或 DomainService 来做到这一点
标签: domain-driven-design repository-pattern ddd-repositories repository-design