DDD如何获取值对象列表

时间:2011-01-26 09:01:46

标签: domain-driven-design ddd-repositories

我有一个域名模型

  • Customer - 汇总根 - 因为订单在没有客户的情况下不能存在
  • Order - 实体
  • OrderStatus - 价值对象

在我的表单中,我需要一个包含所有OrderStatuses的列表。

我是否应该从存储库中获取一个空的客户实体(AR),其中包含一个包含所有OrderStatuses列表的空订单实体?这很尴尬。

2 个答案:

答案 0 :(得分:0)

我曾经问过同样的事情。阅读此链接。

How value objects are saved and loaded?

答案 1 :(得分:0)

嗯,它总是取决于您的问题领域,但是由于缺乏进一步的信息,我想您可能需要稍微破坏一下模型。

即使没有客户也无法存在订单,但订单不会是客户AR下的子实体。您需要引入“边界上下文”的概念。

客户将是一个BC的AR,而Order将是其自己的BC的AR。

在这种情况下,您将使用CustomerId属性(而不是对象引用)引用Order中的Customer,因为它们属于不同的上下文,因此它们甚至可以存在于单独的微服务中,并且位于单独的数据库中。

您知道我要去的地方:拿空订单(或订单列表)的空客户只是为了到达订单状态列表,这是没有意义的。

即使Order和Customer确实属于同一个BC,OrderStatus还是Reference Data,并且最好用枚举类型表示(或者最好使用Enumeration Pattern)。

看看这个附加信息:

Reference data as code

Entities, Value Objects, Aggregates and Roots