首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AggregateRoot是否是DDD (领域驱动设计)中实体的子级?

AggregateRoot是否是DDD (领域驱动设计)中实体的子级?
EN

Stack Overflow用户
提问于 2020-03-15 00:48:39
回答 2查看 289关注 0票数 1

我继承了一个使用领域驱动的设计架构的项目,我对DDD知之甚少。我已经读了很多博客和文献。目前,我有三个域模型,其图形关系如下:父->有多个子->有多个GrandChildren。我正在使用EFCore2.1建立关系并将数据持久化到数据库中。

  • 父母有一个PK
  • 子模型有一个FK到父
  • 孙子模型有一个FK到Child

我的问题是:可以拥有下面的DDD关系

问题:我无法将一个新的孙子保存到现有的子级。

父级为AggregateRoot ==>子实体==> GrandChil为AggregatRoot

我可以使用parent.add(子)通过现有的“父”保存“子”,并且数据没有任何问题地保存到数据库中。

对于“孙女”,我采用类似的方法:

  • UnitOfWork.Complete Try/Catch

  1. 获取现有的父级,然后获取现有的子级
  2. ,向现有的子级child.addNewGrandChild(new_grand_child) 添加一个外孙--这是它抛出异常的地方,但我不能使用Try/Catch捕获异常
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-16 13:20:11

我通过将外孙类转换为实体而不是AggregateRoot来解决我的问题。一旦我这么做了,一切就都正常了。换句话说,我能够通过父文件持久化数据。

我对DDD如此陌生,以至于我还没有掌握所有的概念。我继承了这个项目,并为一个简单的任务为域模型、工厂方法和业务逻辑编写了大量的代码。

票数 0
EN

Stack Overflow用户

发布于 2020-03-15 04:28:31

请理解正确执行DDD不会对数据库施加任何限制,相反,数据库不会对DDD或其“模型”施加任何限制。

孙辈不应该是总根。当您有这样的东西时,很可能您在您的域中缺少了一个上下文,并且/或边界定义不当。

请记住,关系的DDD概念与数据库和fk无关,就DDD而言,数据库被建模为整个系统的一个不透明存储依赖项。

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

https://stackoverflow.com/questions/60688735

复制
相关文章

相似问题

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