加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

域驱动设计 – 如何实施聚合根的规则?

发布时间:2020-12-13 20:47:42 所属栏目:百科 来源:网络整理
导读:在搜索网络时,我遇到了Eric Evans的书中的一系列规则,这些规则应该针对聚合强制执行: 根实体具有全局标识,并且最终负责检查不变量 根实体具有全局标识.边界内的实体具有本地标识,仅在Aggregate中唯一. 除了根实体之外,聚合边界之外的任何内容都不能包含对内
在搜索网络时,我遇到了Eric Evans的书中的一系列规则,这些规则应该针对聚合强制执行:

>根实体具有全局标识,并且最终负责检查不变量
>根实体具有全局标识.边界内的实体具有本地标识,仅在Aggregate中唯一.
>除了根实体之外,聚合边界之外的任何内容都不能包含对内部任何内容的引用.根实体可以将对内部实体的引用传递给其他对象,但它们只能瞬时使用它们(在单个方法或块中).
>只能使用数据库查询直接获取聚合根.其他一切都必须通过遍历来完成.
> Aggregate中的对象可以保存对其他Aggregate根的引用.
>删除操作必须一次性删除聚合边界内的所有内容
>当提交对聚合边界内任何对象的更改时,必须满足整个聚合的所有不变量.

这一切在理论上似乎都很好,但我不知道这些规则将如何在现实世界中实施.

以规则3为例.一旦根实体为外部对象提供了对内部实体的引用,那么什么是使该外部对象保持超出单个方法或块的引用?

(如果执行此操作是特定于平台的,我将有兴趣了解如何在C#/ .NET / NHibernate环境中强制执行此操作.)

我不认为你应该让聚合给你的外部代码访问它的实体.

你告诉你的汇总你想要发生什么,它会处理它.

如果我们有一个聚合:汽车.我们不关心汽油和轮子,我们只是开车.我们向汽车询问有关事情的事情并且在不提及内部参考的情况下回答.

我们问:我们有汽油吗?是.不:给我坦克物品,这样我就可以检查一下我们是否有汽油.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读