在DDD中急切加载集合

时间:2016-03-18 19:08:33

标签: domain-driven-design

我有一个包含域对象OrderOrderItem的聚合。 Order是聚合根。

鉴于Order,我想获得一个特定的OrderItem(例如,数字3)。问题是我不想填充前面的Order.OrderItems。相反,我想按需查询它并获得我需要的东西。

所以我需要将此代码放在Order存储库中,因为我需要从我的数据库中读取。我的问题是,如果在DDD环境中这是正确的,如果是这样,你能给我一个我应该使用的签名的例子吗?我真的很感激。

1 个答案:

答案 0 :(得分:2)

您不应该查询您的域名。

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

您可以实现的是特定的查询/读取模型。在c#世界中,我通常只返回DataRow或者,如果需要,还可以返回DTO:

public interface IOrderQuery
{
    DataRow ItemDetails(Guid orderId, Guid productId);
}

上述签名将根据您的具体情况而变化。

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