Domain driven design 在DDD中加载集合

Domain driven design 在DDD中加载集合,domain-driven-design,Domain Driven Design,我有一个域对象的聚合Order和OrderItem订单是聚合根 给定一个订单,我想得到一个特定的订单项(比如,第3个)。问题是我不想预先填充Order.OrderItems。相反,我想按需查询它,得到我所需要的 因此,我需要将此代码放入Order存储库中,因为我需要从数据库中读取。我的问题是,如果这在DDD上下文中是正确的,如果是,您能给我一个我应该使用的签名示例吗?非常感谢。您不应该查询您的域名 聚合根总是从完全构成的存储库返回 您可以实现一个特定的查询/读取模型。在c#world中,我通常只

我有一个域对象的聚合
Order
OrderItem
<代码>订单是聚合根

给定一个
订单
,我想得到一个特定的
订单项
(比如,第3个)。问题是我不想预先填充
Order.OrderItems
。相反,我想按需查询它,得到我所需要的


因此,我需要将此代码放入
Order
存储库中,因为我需要从数据库中读取。我的问题是,如果这在DDD上下文中是正确的,如果是,您能给我一个我应该使用的签名示例吗?非常感谢。

您不应该查询您的域名


聚合根总是从完全构成的存储库返回

您可以实现一个特定的查询/读取模型。在c#world中,我通常只返回一个
数据行
,或者,如果需要,返回一个DTO:

public interface IOrderQuery
{
    DataRow ItemDetails(Guid orderId, Guid productId);
}
上述签名将根据您的具体情况进行更改


由于这是一种假设情况,我想你为什么要做你正在做的事情的优点不应该太重要;)

阿法克。您可以将这些查询放入域服务或repo中。cqrs的另一个解决方案是使用这些查询创建一个单独的读域。为什么不想要订单。OrderItems?谢谢你的帮助。这只是一个假设的例子。我在试着理解DDD。但我不确定在现实生活中是否会遇到这种情况。非常感谢。为什么订单中有OrderItem列表?您有哪些规则适用于订单中的所有OrderItem?“聚合根总是从完全构成的存储库返回。”>这真的很清楚,谢谢!