Root Entity引用另一个根

时间:2011-05-05 16:16:28

标签: domain-driven-design

我正面临典型的DDD问题。它必须非常基础。我有订单和客户。 客户可以创建多个订单。客户是其自身聚合的根源。订单是其自身聚合的根。但是当客户创建订单时,我们会在订单上显示部分客户信息。订单汇总是否应保留对客户的参考? 当它保存它然后当订单存储库获得订单时,我们能够检索一部分客户信息以及显示。但是当我们在交易中涉及订单时,如果客户也同时获得更新,客户也会进入它,这会产生问题。请指教一下!我的直觉是说我不能从订单中获取客户的参考。

  • 问题2 :(新)

我可以在创建订单(使用订单工厂)时获取并保留对客户(来自客户存储库)的参考,并安全地保存订单(无论如何不在内部更新客户,客户仅适用于信息/查询?)如果相同的客户被修改,否则不会产生争用?让我们假设NHibernate为ORM。

1 个答案:

答案 0 :(得分:2)

一个简单的答案是,您持有客户的ID,或者,如果您的域需要一些ValueObject,其中包含有关客户的最小信息集(ID,名称)。

更复杂的答案是考虑有界上下文。见Eric Evans's presentation他希望将BC章作为本书的第一章。

我们的想法是,在您的客户管理有限上下文中,您的客户实体可以是客户汇总的AR,而订单可以是客户汇总中的实体。在Billing Bounded Context中,您可以拥有一个订单AR,其中包含一个Customer实体。