Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design 我有多少个聚合根_Domain Driven Design_Aggregateroot - Fatal编程技术网

Domain driven design 我有多少个聚合根

Domain driven design 我有多少个聚合根,domain-driven-design,aggregateroot,Domain Driven Design,Aggregateroot,这些是我的实体和关系: 没有实体A,任何实体都无法存在。删除实体A时,所有其他实体也将被删除。因此A是我的聚合根 但我不确定她是不是 1.) B is also an aggregate root for entity C,D and E 2.) E is also an aggregate root for entity F 1.) C,D and E can not exist without B being created 2.) F can not exist without E

这些是我的实体和关系:

没有实体A,任何实体都无法存在。删除实体A时,所有其他实体也将被删除。因此A是我的聚合根

但我不确定她是不是

1.) B is also an aggregate root for entity C,D and E 
2.) E is also an aggregate root for entity F

1.) C,D and E can not exist without B being created
2.) F can not exist without E being created

我现在有3个聚合根并因此创建了3个存储库吗?

如果没有关于您的域的更多信息,就不可能对聚合边界提出建议。实体之间的关系不像实体相关的行为那样相关。实体之间的关系不会自动转换为对象引用;关系也可以实现为存储库


聚合是一致性边界。换句话说,它聚集了在执行相关行为时必须保持一致的状态。在您的情况下,很可能这些实体中的每一个都是一个集合。查看以更好地了解如何将域分解为聚合。

在对域建模时,ARs会自然出现。这里有一个关系数据库模式。有界上下文(BC)决定聚合的开始和结束位置。在不同的BC中,一个实体的名称相同但结构略有不同也是很常见的,即一个产品实体的实现可以从一个BC中的(ID、名称)变化到另一个BC中的完整产品,其中有很多细节。在定义聚合及其根时要非常小心,域对象的错误建模是DDD最常见的缺陷。