删除从另一个聚合引用的对象

时间:2013-04-18 23:29:01

标签: design-patterns domain-driven-design

Jimmy Nilsson的“应用DDD和模式”一书中的一个例子: Order Aggregate and Product Entity

假设我要删除某些 OrderLine 引用的产品,删除我的意思是数据库,为什么? 也许是因为系统已运行很长时间并且用户希望清理一些旧的产品,如何解决这个问题?
对于那些人的另一个问题可能是读过这本书,为什么作者选择不像客户实体那样拍摄产品的快照?

1 个答案:

答案 0 :(得分:0)

由于订单实际上是不可变事件,因此从数据库中删除产品不应影响该产品的现有订单。将适用的产品数据直接复制到订单行项目中通常是个好主意 - 这可能是Jimmy的书中所谓的“快照”,但我不确定。此外,如果您正在使用关系数据库并且您对产品ID有外键约束,那么您应该避免删除产品或删除约束。