DDD 规定您只能通过实体的聚合根来访问实体。举例来说,你有一个聚合根 X,它可能有一个lot子 Y 实体的数量。现在,对于某些场景,您一次只真正关心这些 Y 实体的子集(也许您将它们显示在分页列表或其他内容中)。
那么是否可以实现一个存储库,以便在这种情况下它返回一个不完整的总计的? IE。一个 X 对象,其 Y 集合仅包含我们感兴趣的 Y 实例,而不包含我们感兴趣的 Y 实例all他们当中?例如,这可能会导致 X 上执行某些涉及 Y 的计算的方法无法按预期运行。
这是否表明应考虑将相关 Y 实体提升为聚合根?
我当前的想法(在 C# 中)是利用 LINQ 的延迟执行,以便我的 X 对象有一个 IQueryable 来表示它与 Y 的关系。这样,我可以通过过滤实现透明的延迟加载...但是让它发挥作用使用 ORM(在我的例子中为 Linq to Sql)可能有点棘手。
还有其他聪明的想法吗?
我考虑一个聚合根lot子实体是代码气味,或者是 DDD 气味(如果您愿意的话)。 :-) 一般来说我会考虑两种选择。
- 将您的聚合拆分为许多更小的聚合。这意味着我最初的设计并不是最优的,我需要确定一些新的实体。
- 将您的域拆分为多个有界上下文。这意味着存在使用聚合中实体的公共子集的特定场景集,而存在使用不同子集的其他场景集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)