DDD 如何获取值对象列表

发布于 2024-10-14 07:50:32 字数 269 浏览 3 评论 0原文

我有一个域模型

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

在我的我需要所有 OrderStatuses 的列表。

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

I have a domain model

  • Customer - Aggregate root - because an order can't exist without a customer
  • Order - entity
  • OrderStatus - value object

In my form I need a list of all OrderStatuses.

Should I fetch an empty customer entity(AR) from repository with an empty order entity which is containing a list of all OrderStatuses? This is awkward.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雾里花 2024-10-21 07:50:32

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

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

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

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

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

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

查看以下附加信息:

参考数据作为代码

实体、值对象、聚合和根

Well, it always depends on your problem domain, but lacking further info, I would say you probably need to break your modeling a little bit.

Even though an Order can't exist without a Customer, it will not be a child entity under the Customer AR. You need to introduce the notion of Bounded Contexts.

Customer would be the AR of one BC, while Order would be the AR of its own BC.

In that case, you would reference Customer from Order with a CustomerId property (not with an object reference) because they belong to different contexts, and as such they could even live in separate microservices, in separate databases.

You see where I'm going: it makes no sense to fetch an empty Customer, with an empty Order (or list of Orders) just to reach a list of Order Statuses.

Even if Order and Customer did belong to the same BC, OrderStatus is Reference Data, and would be better represented by an enum type (or better, with the Enumeration Pattern).

Have a look at this additional info:

Reference data as code

Entities, Value Objects, Aggregates and Roots

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文