【问题标题】:Reference another aggregate root in child entity?引用子实体中的另一个聚合根?
【发布时间】:2015-02-13 20:12:29
【问题描述】:

我想在 DDD 的帮助下为订单和产品概念建模,但我想知道如何处理它。

假设你有一个 Order 类,它有 OrderItem 类作为它的子类,并且 Order 是 Aggregate Root,并且 Order 类有一个 OrderItem 列表并且每个 OrderItem 都有一个对 Product Class 的引用。产品当然是聚合根。 我的意思是这样的:

public class Order{
...
public list<OrderItem> OrderItems {get;set;}
}

public class OrderItems{
...
public int Qty {get; set;}
public Product {get; set;}
}

public class Product{
...
}

但据我所知,我无法从 Order Aggregate 的子级引用到 Product Aggregate。如何处理?

Tnx 前进。

【问题讨论】:

    标签: domain-driven-design


    【解决方案1】:

    在书 Architecting application for the enterprise 的第 202 页上,您可以看到一张图片。有各种有界上下文,其中两个与您的需要非常相似。 Order 是一个聚合根,以 Order Detail 作为其子级。 Order Detail 又与 Product 有关系,Product 是不同有界上下文中聚合的聚合根。

    所以首先想到的是Product 属于Order 聚合。 但是,接下来您可能会发现存在处理产品的用例 在订单之外——例如产品目录。这使得 准备另一个根植于Product 的聚合门。

    所以...是的,聚合的子级可以持有对另一个聚合根的引用(即使在不同的有界上下文中)。

    这是一个正确的选择吗?在这种情况下,正确的答案总是:取决于。 什么?关于业务规则,以及您必须如何处理将被另一个更大的聚合 (Order) “吞噬” (Product) 的聚合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2019-02-13
      相关资源
      最近更新 更多