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?“聚合根总是从完全构成的存储库返回。”>这真的很清楚,谢谢!