域驱动设计 – 我允许在DDD中有“不完整”的聚合?
发布时间:2020-12-14 00:50:03 所属栏目:百科 来源:网络整理
导读:DDD声明您应该只能通过其聚合根访问实体.所以说,例如,你有一个聚合的根X,可能有很多孩子Y实体.现在,对于某些情况,您一次只关心这些Y个实体的一个子集(也许您正在一个分页列表中显示它们). 实现存储库是否可行,因此在这种情况下,它返回不完整的聚合? IE浏览
DDD声明您应该只能通过其聚合根访问实体.所以说,例如,你有一个聚合的根X,可能有很多孩子Y实体.现在,对于某些情况,您一次只关心这些Y个实体的一个子集(也许您正在一个分页列表中显示它们).
实现存储库是否可行,因此在这种情况下,它返回不完整的聚合? IE浏览器.一个X对象谁的Ys集合只包含我们感兴趣的Y实例,而不是全部?这可以例如引起X上的方法,其执行涉及Y的一些计算不如预期的那样表现. 这可能意味着有关的Y实体应被视为一个总体根源? 我目前的想法(在C#中)是利用LINQ的延迟执行,所以我的X对象有一个IQueryable来表示它与Y的关系.这样,我可以透明的懒惰加载过滤…但让它工作使用ORM(Linq to Sql在我的情况下)可能有点棘手. 任何其他聪明的想法?
我认为一个具有很多子实体的聚合根是一个代码气味,或者如果你愿意的话,会有DDD的气味. :-)一般来说我看两个选项.
>将您的聚合分割成许多较小的聚合.这意味着我的原始设计不是最佳的,我需要识别一些新的实体.>将您的域拆分成多个有界的上下文.这意味着有一组场景使用聚合中实体的公共子集,而还有其他使用不同子集的情景集. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c – 如何摆脱“BSCMAKE错误BK1500:内部错误”编译错误
- The Swift Programming Language学习笔记(五)——集合类型
- 如何以编程方式在iPhone上播放MP3?
- c# – 表单上的InvokeMember(“submit”)不会重定向浏览器
- TDE on Oracle10.2.0.4
- p:selectCheckboxMenu’选择所有’未调用的ajax侦听器
- 何时以及为何在Ruby中使用Loop Do Construct
- oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
- cocos2d开发学习五:精灵节点CCSpriteBatchNode的渲染和纹理
- 如何连接到R中的Oracle数据库?