识别聚合根

时间:2011-03-09 15:56:59

标签: .net asp.net nhibernate entity-framework domain-driven-design

http://i51.tinypic.com/2ueqidt.jpg

让我们假设以下关系(图表)。 FundCompany拥有基金和账户。还有一个FundAccount,它在账户和基金之间创建了多对多关系(以及关系层面的其他属性)。最后一个账户有一个或多个受益人。

FundCompany是一个聚合根,因为它位于金字塔顶端。没有FundCompany,账户和基金都不能存在。没有基金和账户,FundAccount就不存在;这会使它们成为聚合根源吗?或者Fund仍然是唯一的聚合根,必须通过它来对FundAccount实体进行操作?账户还有受益人这一事实,如果没有账户就无法存在,这是否也表明账户是一个集合根?

此图表中的所有实体都需要我的应用程序中的CRUD操作和屏幕。我之所以提出这个原因,通常每个UI屏幕都会存储它所引用的行/实体的ID。因此,例如,用户点击带有基金的表格上的“详细信息”,我可能需要通过其ID来检索基金。我的理解是,如果一个实体需要直接访问,那么它本身就是一个聚合根。但是,这会使很多实体默认聚合根。

基于上述问题的答案,我必须将这些操作映射到正确的聚合根的存储库。

1 个答案:

答案 0 :(得分:0)

整个图表是单个聚合=它有单个聚合根 - 顶级FundFamily。如果FundAccount无法在没有FundFamily的情况下生效,则它们不能成为聚合根。