use*_*034 7 domain-driven-design ddd-repositories
我有一个域模型
Customer
- 聚合根 - 因为没有客户就无法存在订单Order
- 实体 OrderStatus
- 值对象 在我的表格中,我需要所有 OrderStatuses
.
我应该从存储库中获取一个空的客户实体 (AR),其中包含一个包含所有 OrderStatuses 的列表的空订单实体吗?这很尴尬。
好吧,它总是取决于您的问题领域,但缺乏进一步的信息,我想说您可能需要稍微打破您的建模。
尽管订单不能没有客户而存在,但它不会是客户 AR 下的子实体。您需要引入有界上下文的概念。
客户将是一个 BC 的 AR,而订单将是其自己 BC 的 AR。
在这种情况下,您可以使用 CustomerId 属性(而不是对象引用)从 Order 引用 Customer,因为它们属于不同的上下文,因此它们甚至可以位于单独的微服务、单独的数据库中。
您知道我要去哪里了:仅仅为了获取订单状态列表而获取空客户和空订单(或订单列表)是没有意义的。
即使 Order 和 Customer 确实属于同一个 BC,OrderStatus 也是参考数据,并且最好用枚举类型(或者使用枚举模式更好)来表示。
看看这个附加信息: