0

SQL Server CR E 3.5を使用してC#でデータベースアプリを作成しており、リポジトリパターンを実装したいと考えています。私はGoogleとSOの両方でいくつかの検索を行いました。ただし、自分のニーズに合った実装が見つからないため、SOコミュニティに直接問い合わせます。

私のアプリの主なビジネスオブジェクトは、ビデオ、俳優、タグカテゴリ、タグです。基本的なビジネスルールは次のとおりです。

  1. すべてのタグはタグカテゴリに属します。
  2. ビデオには、複数の俳優とタグが関連付けられている場合とされていない場合があります。
  3. 俳優とタグには、複数の動画が関連付けられている場合とされていない場合があります。

これが私にとって物事が曖昧になるところです:

  1. アクター、タグカテゴリ、およびタグを含むビデオリポジトリを実装する必要がありますか、それともこれらのビジネスオブジェクトのそれぞれに独自のリポジトリを含める必要がありますか?これらのオブジェクトは独立して存在できるため、それぞれのリポジトリを作成する傾向があります。

  2. 各オブジェクトに独自のリポジトリが必要な場合、どのようにそれらを関連付けるのですか?たとえば、ビデオリポジトリには、タグリポジトリに一致を問い合わせるプロパティを含める必要がありますか?

これを設定するためのガイドラインまたはベストプラクティスを探しています。リポジトリパターンの基本は理解していますが、それらを接続する方法についてアドバイスが必要です。

4

1 に答える 1

2

集約ルートのリポジトリのみが必要です。

すべてのクエリをカプセル化する方法としてリポジトリを使用することはお勧めしません。リポジトリはクエリの大きなダンプグラウンドではありません。リポジトリは、DDDが最も適切なシナリオで使用するための特定のツールです。詳細については、この記事を参照してください: http: //ayende.com/blog/3955/repository-is-the-new-singleton

リポジトリを「接続」または「関連付ける」必要はありません。

「このユーザーが借りた動画のすべてのタグを読み込む」などのクエリを作成する場合は、リポジトリに配置しないことをお勧めします。このクエリは、UIなどの特定のケースに固有である可能性が高く、クエリが必要なクラスの内部または近くに記述する必要があります。クエリの出力は、エンティティではなく、UIの要件のために特別に作成された読み取り専用のデータ転送オブジェクトにマップされる可能性があります。

于 2012-07-18T23:41:48.373 に答える