关于领域驱动设计,Order 和 OrderLines 始终被视为一个聚合,其中 Order 是根。通常,一旦创建订单,就无法更改它。然而,就我而言,这是可能的。相反,每个订单都有一个状态,用于确定订单是否可以更改。
在这种情况下,Order 和 OrderLines 都是它们自己的“聚合根”吗?我需要能够更新订单行,所以我认为他们应该有自己的存储库。但我不想检索订单行,并在没有订单的情况下保留它们。所以这表明仍然存在一个聚合,其中 Order 是根,具有创建订单行的工厂方法 (Order.CreateOrderLine(quantity, text, ...)。
另一种方法是在修改订单行集合时更新 Order,然后调用 UpdateOrder(Order)。我需要某种方法来检测应该只更新集合,而不是 Order 本身(使用实体框架)。你怎么看?