我无法理解如何访问聚合根的子实体。从我的previous question的答案我现在明白,我需要确定我的模型的聚合根,然后只设置处理这些根对象的存储库。ASP.NET MVC Action方法如何访问聚合根的子实体?
所以说我有一个包含项目的订单对象。项目必须存在于Order中,因此Order是聚合根。但是如果我想在我的网站中包含OrderItem详细信息页面呢?此页面的URL可能类似于/ Order/ItemDetails/1234,其中1234是OrderItem的ID。然而,这将需要我直接通过ID检索项目,并且因为它不是一个聚合根,我不应该有一个OrderItemRepository可以通过ID来检索OrderItem。
因为我想使用独立于Orders的OrderItems,这是否意味着OrderItem实际上不是Order的集合,而是另一个聚合根?
我会考虑OrderItem作为一个值对象,因为它没有订单的上下文没有真正的mening。 – alexn 2011-05-18 07:30:11
OrderItem是一个实体而不是值对象,因此它必须具有标识。从业务角度来看,2个同等数量产品的OrderItems可能不相等 – xelibrion 2011-05-18 09:25:36
您也可以将您的问题发布到Google DDD/CQRS组,该组具有非常活跃的社区https://groups.google.com/forum/#!forum/dddcqrs – xelibrion 2011-05-18 09:27:54