【发布时间】:2010-09-06 16:55:22
【问题描述】:
DDD 声明您应该只通过它们的聚合根访问实体。例如,假设您有一个聚合根 X,它可能有 lot 个子 Y 实体。现在,在某些情况下,您一次只真正关心这些 Y 实体的一个子集(也许您将它们显示在分页列表或其他内容中)。
那么是否可以实现一个存储库,以便在这种情况下它返回一个 incomplete 聚合? IE。一个 X 对象,它的 Ys 集合只包含我们感兴趣的 Y 实例,而不是 所有 个?例如,这可能会导致 X 上执行一些涉及 Ys 的计算的方法无法按预期运行。
这是否可能表明所讨论的 Y 实体应被视为提升为聚合根?
我目前的想法(在 C# 中)是利用 LINQ 的延迟执行,以便我的 X 对象有一个 IQueryable 来表示它与 Y 的关系。这样,我可以通过过滤进行透明的延迟加载......但是得到这与 ORM(在我的情况下为 Linq to Sql)一起使用可能有点棘手。
还有其他聪明的想法吗?
【问题讨论】: