首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在另一个聚合根中引用另一个聚合根?

是否在另一个聚合根中引用另一个聚合根?
EN

Stack Overflow用户
提问于 2013-07-12 17:24:42
回答 1查看 451关注 0票数 0

我做DDD已经有几年了,当涉及到设计Aggregate时,它仍然是一个挑战。这就是DDD的有趣之处,它会让你头晕。我之所以问这个问题,是因为我是一个项目的架构师,我们正在设计模型。当模型与GUI并行发展,并与客户一起收集需求时,这是一次迭代。现在来看看问题所在。我们的场景是,我们面临着一些正在成长为非常大的AR的Aggregate,我认为我擅长寻找价值对象,并避免领域模型陷阱。但我从来没有遇到过这种情况。一个例子是我们的系统应该表示一个移动电信天线。天线位于绿色区域。但是天线可以有一个带有设备的遮蔽物。天线可以有微波链路,它可以在地面上有光纤线路,它可以有无线电元件,它可以有电源。面对现实吧。如果天线被终止..。所有这些依赖关系也会被移除。因为它们是安装的一部分(除了绿色字段:)),但您了解情况。天线模型很复杂..。而大型AR在并发锁定、性能和内存消耗方面是不灵活的。

在阅读了Vaughn Vernons关于有效的AR设计http://dddcommunity.org/library/vernon_2011/的非常好的论文后,我意识到我们需要开始把我们的大AR切成碎片。

我的想法是像弗农建议的那样搬出去,例如MicrowaveLinks到一个单独的AR (即使它不在现实中)。MicrowaveLink实体,现在是AR,是按Id的参考天线。在MicrowaveLink实体类中,我们有一个为AntennaId的值对象属性。我们的用例支持这个场景。我们很少将天线和链路一起列出。因此,可以通过MicrowaveLinkRepository.ListByAntenna(Guid antennaId)加载MicrowaveLinks

1)你以前做过这种AR拆分吗?你是如何做到的? 2)你是否设法通过域约束和DB (我们使用EF 5作为ORM)完整地支持这种AR --> AR关系?

我的最佳目标是能够跳过天线上的Antenna.Microwaves集合。所以天线不知道是否有连接。链路知道它们安装在什么天线上。在MicrowaveLink实体中,我只想要一个AntennaId属性,希望有一个确保天线存在的DB约束。

我知道我可以通过T-SQL脚本在EF或DB中的Seed方法中手动添加FK约束。但是,EF5代码优先流畅映射能以某种方式支持这种关系吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-13 01:03:30

听起来你有一台Installation AR。当需要另一个AR时,您应该将包含的AR建模为容器中的唯一ID或VO (如果需要)。

你需要在你的鼻子周围有坚硬的边缘。

回到Order / OrderLine示例:)

一个OrderLine似乎“需要”一个产品,但是你不应该给OrderLine一个产品实例。相反,仅将ProductNameProductId建模为OrderLine中的VO。现在,您拥有了Order AR的独特优势。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17611635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档