【发布时间】:2016-03-19 14:04:16
【问题描述】:
假设我正在使用 C# 和实体框架实现领域驱动设计。
我的代码结构使得每个聚合在 EF 中都有自己的 dbcontext,以尊重聚合周围的事务边界原则。
Aggregate 1,InventoryAggregate 和 Aggregate 2,OrderAggregate,正在被某个业务流程 AddItemToOrder 更新。
在 OrderAggregate 添加项目后,它会触发一个域事件 ItemAddedToOrder,该事件由 InventoryAggregate 侦听,然后执行一些业务流程 SubtractQuantityFromInventory。
InventoryAggregate 未能减去库存,它触发了一个域事件 NotEnoughInventory,OrderAggregate 监听了该事件。
OrderAggregate 然后尝试从订单中删除该项目但失败。
现在订单中有一件不应该的商品,因为我们实际上没有足够的库存来出售该商品。
应该如何处理?
【问题讨论】:
标签: c# entity-framework domain-driven-design eventual-consistency