3

より理にかなっていること。サービスレイヤーに複数のリポジトリー(ファサードとして機能)を参照させるか、リポジトリーに複数の関連エンティティをグループ化します。たとえば、私は次のエンティティを持っていますが、物事を構造化する方法がわかりません。

エンティティ(POCO)

  1. 調査
  2. SurveyGroup
  3. SurveyQuestion
  4. SurveyAnswer

Q1。 これらの各エンティティには独自のリポジトリが必要ですか?SurveyQuestionは、SurveyGroupに含まれていなければ存在できません。また、SurveyGroupは、Surveyに含まれていなければ存在できません。

Q2。 Survey、SurveyGroup、SurveyQuestion用に1つのリポジトリを作成し、SurveyAnswers用に追加のリポジトリを作成する必要がありますか?

Q3。それぞれに個別のリポジトリを作成し、それらすべてを参照する1つのサービスクラス(SurveyService)を作成する必要がありますか?

このようなものの「ベストプラクティス」と見なされるものがわかりません。

4

2 に答える 2

4

DDD の一般的な経験則は、すべてのAggregate Rootに対してリポジトリを作成することです。

あなたの例ではSurvey、集約ルートのように見えるので、SurveyRepository.

于 2012-11-29T19:32:08.973 に答える
1

経験則(つまり標準)は、IDを持つエンティティ(主キーなど)のリポジトリを持つことです。言い換えると、そのようなエンティティは、[少なくとも]独自のリポジトリでCRUD操作を定義できます。

「ファーストクラス」のエンティティではなく、CRUDを独自に定義できないエンティティには、リポジトリは必要ありません。したがって、それらは依存関係マッピングを使用して処理する必要があります(他の「ファーストクラス」エンティティマッピングがそれらを処理します)。

ただし、プロジェクト内のリポジトリの数を減らしたい場合があります。その場合、エンティティをグループ化するための代替(非標準)の方法を検討し始めます。

結論:標準になりたい場合は、自己完結型のエンティティと同じ数のリポジトリを用意してください。具体的な答えは、質問に記載されている実体によって異なりますが、この情報が手元にあれば、自分で判断できると思います。

以前の回答は、[理論的には]いくつかのエンティティを不必要に処理するリポジトリにつながる可能性があり、将来、エンティティ処理/マッピングコードを検索/検索するという頭痛の種になります。

[Fowler、Mによって定義された用語を使用しました。-アイデンティティ依存関係のマッピング]

于 2012-11-29T20:21:16.670 に答える