DDD:引用另一个聚合子实体
我目前正在深入研究DDD,需要一点点启发. 我有两个实体 >寺庙 Temple(耳机)包含基本信息(名称,描述,……),并且有n个变体,其中包含技术说明(CAD绘图,尺寸,…) 我的第一印象是: >如果我删除一个Temple,所有TempleVariants都应该删除 但后来我读到,聚合根之外的任何内容都不允许引用另一个聚合内的实体.但实际上并不是Temple被外部实体引用,而是TempleVariants. 这是否意味着在(DDD)现实中Temple和TempleVariant是不同的聚合体,它们似乎只是一个聚合体? 但是,如果我删除Temple怎么办?正如我所说,TempleVariants也必须删除.但那会违反规则“一次聚合 – 改变 – 一次交易”(或者所谓的:),因为我的“感觉”是我必须在一次交易中删除它们…… 所以我的问题是: >那两个聚合体? LG 对我来说,有两种不同的方法来应对你的担忧. 您应该记住,需要聚合来确保业务不变量. TempleVariants作为价值对象 如果(且仅当)TempleVariant的实例需要处理业务规则,它们应该是聚合的一部分.也就是说,圣殿包含它们. 在这种情况下,当您删除Temple时,所有连接的TempleVariants都会消失.尽管如此,在我开发的大多数DDD应用程序中,没有实体被删除:它们只是存档的.但我已经习惯了财务应用程序和域名,可能是在您的域中删除寺庙是正确的事情. TempleVariants作为DTO 如果Temple中没有命令需要任何TempleVariant来确保业务规则,那么这封信可能只是有用的描述性数据,可以通过映射数据库模式的适当DTO来处理.在这种情况下,我将定义一个基础结构服务,它返回指定Temple的所有变体. 在这种情况下,您可以在DTO中公开相关Temple的shared identifier,但这不是必需的. 有关聚合设计的更多信息,我强烈建议您阅读Vernon’s essays on aggregate design. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |