DDD 如何获取值对象列表

use*_*034 7 domain-driven-design ddd-repositories

我有一个域模型

  • Customer - 聚合根 - 因为没有客户就无法存在订单
  • Order - 实体
  • OrderStatus - 值对象

在我的表格中,我需要所有 OrderStatuses.

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

Phi*_*ana 1

好吧,它总是取决于您的问题领域,但缺乏进一步的信息,我想说您可能需要稍微打破您的建模。

尽管订单不能没有客户而存在,但它不会是客户 AR 下的子实体。您需要引入有界上下文的概念。

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

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

您知道我要去哪里了:仅仅为了获取订单状态列表而获取空客户和空订单(或订单列表)是没有意义的。

即使 Order 和 Customer 确实属于同一个 BC,OrderStatus 也是参考数据,并且最好用枚举类型(或者使用枚举模式更好)来表示。

看看这个附加信息:

参考数据作为代码

实体、值对象、聚合和根