我有一个关于实现DDD和存储库模式的问题。 我应该修改存储库中的实体吗?DDD。我应该修改存储库中的实体吗?
比方说,我有一个订单,并希望将该订单标记为完成。 正如我所见,我有两种选择。
-
1.
var order _orderRepository.GetById(1);
order.Finish();
_orderRepository.Update(order);
...其中的变化是坚持在更新调用数据库。
2.
var order _orderRepository.GetById(1);
var finishedOrder = _orderRepository.Finish(order);
...其中的变化是坚持在完成调用数据库。
使用其中一种方法是否有优势?什么是DDD这样做的方式?
第一个是正确的方法。 – Jehof
@Jehof我也这么认为,但为什么我应该更喜欢第一个呢? –
原因我认为不是存储库负责将订单标记为已完成。它直到一个命令(当使用CQRS)或一个DomainService来做到这一点 – Jehof