我有一个包含域对象Order
和OrderItem
的聚合。 Order
是聚合根。
鉴于Order
,我想获得一个特定的OrderItem
(例如,数字3)。问题是我不想填充前面的Order.OrderItems
。相反,我想按需查询它并获得我需要的东西。
所以我需要将此代码放在Order
存储库中,因为我需要从我的数据库中读取。我的问题是,如果在DDD环境中这是正确的,如果是这样,你能给我一个我应该使用的签名的例子吗?我真的很感激。
答案 0 :(得分:2)
您不应该查询您的域名。
总是从完全构成的存储库返回聚合根。
您可以实现的是特定的查询/读取模型。在c#世界中,我通常只返回DataRow
或者,如果需要,还可以返回DTO:
public interface IOrderQuery
{
DataRow ItemDetails(Guid orderId, Guid productId);
}
上述签名将根据您的具体情况而变化。
由于这是一个假设的情况,我猜你为什么做你正在做的事情的优点不应该太重要;)