我有一个关于实现 DDD 和存储库模式的问题。我应该修改存储库中的实体吗?
假设我有一个订单并且想将该订单标记为已完成。当我看到这一点时,我有两个选择。
-
1.
var order _orderRepository.GetById(1);
order.Finish();
_orderRepository.Update(order);
...在更新调用中将更改持久保存到数据库的位置。
2.
var order _orderRepository.GetById(1);
var finishedOrder = _orderRepository.Finish(order);
...在Finish调用中将更改保存到数据库中。
使用一种方法比另一种方法有优势吗?这样做的 DDD 方式是什么?