Domain driven design 是否在子实体中引用另一个聚合根?
我想在DDD的帮助下对订单和产品概念进行建模,但我想知道如何处理它 假设您有一个Order类,它的子类是OrderItem类,Order是聚合根,Order类有OrderItems列表,每个OrderItem都有对Product类的引用。产品当然是聚合根。 我是说像这样的事情:Domain driven design 是否在子实体中引用另一个聚合根?,domain-driven-design,Domain Driven Design,我想在DDD的帮助下对订单和产品概念进行建模,但我想知道如何处理它 假设您有一个Order类,它的子类是OrderItem类,Order是聚合根,Order类有OrderItems列表,每个OrderItem都有对Product类的引用。产品当然是聚合根。 我是说像这样的事情: public class Order{ ... public list<OrderItem> OrderItems {get;set;} } public class OrderItems{ ... pub
public class Order{
...
public list<OrderItem> OrderItems {get;set;}
}
public class OrderItems{
...
public int Qty {get; set;}
public Product {get; set;}
}
public class Product{
...
}
但据我所知,我无法从订单集合的子集合引用到产品集合。如何应对
Tnx在前进。在书的第202页,你可以看到一幅图像。有各种各样的有界上下文,其中两个与您需要的内容非常相似。Order是聚合根,其子级为Order Detail。订单细节反过来又与产品有关系,产品是不同有界上下文中聚合的聚集根
所以第一个想法是产品属于订单集合。
然而,接下来您可能会发现存在用于处理产品的用例
订单之外,例如产品目录。这使得
这是另一个植根于产品的群体
所以。。。是的,即使在不同的有界上下文中,聚合的子级也可以持有对另一个聚合根的引用
这是正确的选择吗?在这种情况下,正确的答案总是:视情况而定。
凭什么?关于业务规则,以及如何处理将被另一个更大的聚合订单吞噬的聚合