【问题标题】:DDD How to fetch a list of value objectsDDD 如何获取值对象列表
【发布时间】:2011-06-15 17:20:12
【问题描述】:

我有一个领域模型

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

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

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

【问题讨论】:

  • “我需要一份所有订单状态的列表”是什么意思?您需要所有可用值的列表吗?

标签: domain-driven-design ddd-repositories


【解决方案1】:

嗯,它总是取决于你的问题领域,但缺乏更多信息,我想说你可能需要稍微打破你的建模。

即使没有客户就不能存在订单,但它也不会是客户 AR 下的子实体。你需要引入限界上下文的概念。

Customer 是一个 BC 的 AR,而 Order 是它自己的 BC 的 AR。

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

你知道我要去哪里了:获取一个空的客户,一个空的订单(或订单列表)只是为了获得一个订单状态列表是没有意义的。

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

看看这个附加信息:

Reference data as code

Entities, Value Objects, Aggregates and Roots

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2022-06-22
    • 2019-05-08
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多