Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 领域驱动设计-产品目录,我应该怎么做?_C#_Design Patterns_Domain Driven Design - Fatal编程技术网

C# 领域驱动设计-产品目录,我应该怎么做?

C# 领域驱动设计-产品目录,我应该怎么做?,c#,design-patterns,domain-driven-design,C#,Design Patterns,Domain Driven Design,我正在为一个具有产品和商店的通用应用程序建模 一个产品可以在n个商店中有一定数量的库存,一个商店可以储存各种产品 即,n到n的关系: 在我的模型中,产品和商店都是聚合根 我无法在使用DDD的类模型中描述这种关系 库存的更新是按商店还是按产品进行的 ProductInventory应该是一个新的聚合根?根据您所附的图表,您正在应用关系范例。 你提到了三个不同的概念。首先是产品!为了拥有商店,您必须以某种方式在可计算模型中表示产品。什么是产品?这是你从制造商那里得到的东西。一旦它在工厂里建成,产品

我正在为一个具有产品和商店的通用应用程序建模

一个产品可以在n个商店中有一定数量的库存,一个商店可以储存各种产品

即,n到n的关系:

在我的模型中,产品和商店都是聚合根

我无法在使用DDD的类模型中描述这种关系

库存的更新是按商店还是按产品进行的


ProductInventory应该是一个新的聚合根?

根据您所附的图表,您正在应用关系范例。 你提到了三个不同的概念。首先是产品!为了拥有商店,您必须以某种方式在可计算模型中表示产品。什么是产品?这是你从制造商那里得到的东西。一旦它在工厂里建成,产品就可以发送给执行购买的人了!到目前为止,我们有一个产品!这是否意味着它已经“连接”到商店?一点也不。为什么要将产品连接到商店?用更好的语义学,让我们再问一个问题,并说为什么你想在你的商店里有一个产品?那是因为你想卖掉它!产品抽象实现了它的目的!现在,您需要在商店的上下文中表示产品,因此必须使用另一个抽象来实现这一点。。。在商店中,什么是产品?这是一个产品销售或出版物!你有一个商店,有很多产品在出售,你知道通过使用另一个内聚抽象跟踪产品,所以你想出了一个新的概念

关注行为是非常重要的,但让我在不详细说明每个聚合的方法的情况下,大致恢复一下:

Product {id}
ProductInSale {id, productId, storeId, price}
Store {id, name}
Stock {id, productId, quantity}
希望有帮助,
Sebastian.

我可以想象库存是一个聚合根,它有一个产品列表作为价值对象,其中包含所有需要的信息。产品可能是不同上下文中的聚合根。变更必须通过事件传达给库存,以便他们能够做出相应的反应。例如,使一个产品不再可用,应触发一个域事件“product X不再可用”,该事件应由库存部门处理,以将该产品(价值对象)从其列表中删除。

对DDD不是100%熟悉,但是否存在商店无法管理其库存的原因?Hi@XenoPuTtSs,没有理由这么做。