C# 领域驱动设计-产品目录,我应该怎么做?
我正在为一个具有产品和商店的通用应用程序建模 一个产品可以在n个商店中有一定数量的库存,一个商店可以储存各种产品 即,n到n的关系: 在我的模型中,产品和商店都是聚合根 我无法在使用DDD的类模型中描述这种关系 库存的更新是按商店还是按产品进行的C# 领域驱动设计-产品目录,我应该怎么做?,c#,design-patterns,domain-driven-design,C#,Design Patterns,Domain Driven Design,我正在为一个具有产品和商店的通用应用程序建模 一个产品可以在n个商店中有一定数量的库存,一个商店可以储存各种产品 即,n到n的关系: 在我的模型中,产品和商店都是聚合根 我无法在使用DDD的类模型中描述这种关系 库存的更新是按商店还是按产品进行的 ProductInventory应该是一个新的聚合根?根据您所附的图表,您正在应用关系范例。 你提到了三个不同的概念。首先是产品!为了拥有商店,您必须以某种方式在可计算模型中表示产品。什么是产品?这是你从制造商那里得到的东西。一旦它在工厂里建成,产品
ProductInventory应该是一个新的聚合根?根据您所附的图表,您正在应用关系范例。 你提到了三个不同的概念。首先是产品!为了拥有商店,您必须以某种方式在可计算模型中表示产品。什么是产品?这是你从制造商那里得到的东西。一旦它在工厂里建成,产品就可以发送给执行购买的人了!到目前为止,我们有一个产品!这是否意味着它已经“连接”到商店?一点也不。为什么要将产品连接到商店?用更好的语义学,让我们再问一个问题,并说为什么你想在你的商店里有一个产品?那是因为你想卖掉它!产品抽象实现了它的目的!现在,您需要在商店的上下文中表示产品,因此必须使用另一个抽象来实现这一点。。。在商店中,什么是产品?这是一个产品销售或出版物!你有一个商店,有很多产品在出售,你知道通过使用另一个内聚抽象跟踪产品,所以你想出了一个新的概念 关注行为是非常重要的,但让我在不详细说明每个聚合的方法的情况下,大致恢复一下:
Product {id}
ProductInSale {id, productId, storeId, price}
Store {id, name}
Stock {id, productId, quantity}
希望有帮助,
Sebastian.我可以想象库存是一个聚合根,它有一个产品列表作为价值对象,其中包含所有需要的信息。产品可能是不同上下文中的聚合根。变更必须通过事件传达给库存,以便他们能够做出相应的反应。例如,使一个产品不再可用,应触发一个域事件“product X不再可用”,该事件应由库存部门处理,以将该产品(价值对象)从其列表中删除。对DDD不是100%熟悉,但是否存在商店无法管理其库存的原因?Hi@XenoPuTtSs,没有理由这么做。