2016-03-18 6 views
2

私はドメインオブジェクトOrderOrderItemを持つ集計を持っています。 Orderは集約ルートです。DDDでコレクションを熱心に読み込んでいます

が指定されていると、特定のOrderItem(たとえば、番号3)を取得したいと考えています。問題は、前もってOrder.OrderItemsを配置したくないということです。代わりに、私はそれを要求に応じて照会し、必要なものだけを取得したい。

私は自分のデータベースから読む必要があるので、このコードをOrderリポジトリに配置する必要があります。私の質問は、これがDDDの文脈で正しいのかどうかです。もしそうなら、使用すべき署名の例を教えてください。本当に感謝しております。

+0

私の知る限り。これらのクエリをドメインサービスまたはリポジトリに配置することができます。 cqrsによるもう1つの解決策は、これらのクエリとは別の読み取りドメインを持つことです。なぜOrderを持っていないのですか.OrderItems? – inf3rno

+0

助けてくれてありがとう。これはほんの一例です。私はDDDを理解しようとしています。私は実際にこのシナリオに遭遇するかどうかはわかりません。ありがとうございました! – user11081980

+0

Order内にOrderItemのリストがあるのはなぜですか?オーダー内のすべてのOrderItemに適用されるルールはありますか? – plalx

答えて

2

ドメインを照会しないでください。

集約ルートは、完全に構成されたリポジトリから常に返されます。

実装できるのは特定のクエリ/読み取りモデルです。必要であれば、C#の世界では、私は通常、単に、DTOをDataRowを返すか:

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

上記の署名があなたの特定のケースに応じて変化します。

それは私はあなたが何をしているかをやっている理由のメリットはあまり問題ではないはず推測仮定的な状況であるので;)

+0

"集約ルートは常に完全に構​​成されたリポジトリから返されます。" >それは本当にそれを明確にしました、ありがとう! – user11081980

関連する問題