2

ドメイン駆動設計では、エンティティのコレクションプロパティに部分的な値を設定できますか?

たとえば、Customer.Orders、Post.Comments、Graph.Verticesなどのプロパティには、常にすべての注文、コメント、頂点を含める必要がありますか、それとも今日の注文、最近のコメント、孤立した頂点を含めることができますか?

同様に、リポジトリは次のようなメソッドを提供する必要があります

GetCustomerWithOrdersBySpecification
GetPostWithCommentsBefore

等。?

4

2 に答える 2

2

DDDがこれを行うかどうかを指示しているとは思いません。それはあなたが構築しているシステムとあなたが解決する必要がある特定の問題に強く依存します。

私はこれについてのパターンについてさえ聞いたことがありません。

主観的な観点から、エンティティは定義によって完全である必要があり(遅延読み込みを考慮)、クライアントに送信されるデータの量を最適化するために、完全にまたは部分的にDTOに読み込むことができます。ただし、問題が解決する場合は、データベースから部分的なエンティティをロードしてもかまいません。

于 2009-06-11T20:45:26.317 に答える
2

ドメイン駆動設計にもサービスの概念があることを忘れないでください。特定のデータベースクエリを実行するには、親オブジェクトにアタッチされた子オブジェクトのコレクションとしてではなく、サービスとして問題をモデル化することをお勧めします。

この良い例は、ユーザーが入力したいくつかのパラメーターを受け入れてレポートを作成することです。これを次のようにモデル化する方が簡単です。

CustomerReportService.GetOrdersByOrderDate(Customer theCustomer, Date cutoff);

このようより:

myCustomer.OrdersCollection.SelectMatching(Date cutoff);

言い換えると、データ入力に使用するDDDモデルは、レポートに使用するDDDモデルと同じである必要はありません

高度にスケーラブルなシステムでは、これら2つの懸念を分離するのが一般的です。

于 2009-11-04T15:42:49.523 に答える