domain-driven-design - DDD 如何获取值对象列表

标签 domain-driven-design ddd-repositories

我有一个域模型

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

  • 在我的表单中,我需要所有 OrderStatuses 的列表.

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

    最佳答案

    嗯,这总是取决于您的问题域,但缺乏更多信息,我会说您可能需要稍微打破您的建模。
    即使没有客户就不能存在订单,但它不会是客户 AR 下的子实体。您需要引入限界上下文的概念。
    Customer 将是一个 BC 的 AR,而 Order 将是它自己的 BC 的 AR。
    在这种情况下,您将使用 CustomerId 属性(而不是使用对象引用)从 Order 引用 Customer,因为它们属于不同的上下文,因此它们甚至可以存在于单独的微服务、单独的数据库中。
    你知道我要去哪里:获取一个空的 Customer 和一个空的订单(或订单列表)只是为了到达订单状态列表是没有意义的。
    即使 Order 和 Customer 确实属于同一个 BC,OrderStatus 也是引用数据,最好用枚举类型表示(或者更好,使用枚举模式)。
    看看这个附加信息:
    Reference data as code
    Entities, Value Objects, Aggregates and Roots

    关于domain-driven-design - DDD 如何获取值对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802746/

    相关文章:

    验证和 DDD - kotlin 数据类

    domain-driven-design - 如何在 DDD 中正确定义聚合?

    domain-driven-design - DDD工厂责任

    c# - 将 LINQ to SQL 与每个原子操作一个 DataContext 结合使用时出现问题

    c# - 原始痴迷 - 具有自动增量的强类型 int ID

    .net - 解决方案源代码组织指南(OO/DDD)

    domain-driven-design - 事件源链事件

    java - Spring Data 存储库实际上是如何实现的?

    design-patterns - Active Record 模式、Repository 模式和可测试性(java 中)

    exception-handling - 我的域异常应该从应用层抛出吗?