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