gpt4 book ai didi

domain-driven-design - 我可以在 DDD 中有 "incomplete"聚合吗?

转载 作者:行者123 更新时间:2023-12-03 14:59:18 26 4
gpt4 key购买 nike

DDD 声明您应该只通过它们的聚合根访问实体。例如,假设您有一个聚合根 X,它可能有很多子 Y 实体。现在,在某些情况下,您一次只真正关心这些 Y 实体的一个子集(也许您将它们显示在分页列表或其他内容中)。

那么是否可以实现一个存储库,以便在这种情况下它返回一个不完整的聚合? IE。一个 X 对象,它的 Ys 集合只包含我们感兴趣的 Y 实例,而不是全部?例如,这可能会导致 X 上执行一些涉及 Ys 的计算的方法无法按预期运行。

这是否可能表明所讨论的 Y 实体应被视为提升为聚合根?

我目前的想法(在 C# 中)是利用 LINQ 的延迟执行,以便我的 X 对象有一个 IQueryable 来表示它与 Y 的关系。这样,我可以通过过滤进行透明的延迟加载......但是让它工作使用 ORM(在我的例子中是 Linq to Sql)可能有点棘手。

还有其他聪明的想法吗?

最佳答案

我认为具有许多子实体的聚合根是代码异味,或者如果您愿意的话,是 DDD 异味。 :-) 通常我看两个选项。

  • 将您的聚合拆分为许多较小的聚合。这意味着我的原始设计不是最优的,我需要识别一些新实体。
  • 将您的域拆分为多个有界上下文。这意味着存在使用聚合中实体的公共(public)子集的特定场景集,而其他场景集使用不同的子集。
  • 关于domain-driven-design - 我可以在 DDD 中有 "incomplete"聚合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25042/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com