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

域驱动设计 – 我允许在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的气味. :-)一般来说我看两个选项.

>将您的聚合分割成许多较小的聚合.这意味着我的原始设计不是最佳的,我需要识别一些新的实体.>将您的域拆分成多个有界的上下文.这意味着有一组场景使用聚合中实体的公共子集,而还有其他使用不同子集的情景集.

(编辑:李大同)

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

    推荐文章
      热点阅读