0

私はリポジトリ パターンを使用しており、長い間使用していますが、良い解決策が見つからないことが 1 つあります。多くの場合、複数のエンティティに関連するデータにアクセスする必要がありますが、その機能をどこに配置するのに適していると思われるソリューションが見つかりません。いくつかのケース:

システムにタスクを持つユーザーがいると仮定します。

  • 各ユーザーの最新のタスクのリストを、ユーザーとタスクのペアとして取得する必要があります。Dictionary<int, int> GetUsersRecentTask()
  • その月のすべてのユーザーとそのタスクのレポートを生成する必要があります。
  • システム内のすべてのオブジェクトに関する統計を生成する必要があります。

通常、私はそれをUsersリポジトリに入れるだけですが、それは正しくありません.

また、より高いレベルのサービスに配置しようとしましたが、そこにデータ アクセスを配置するのは適切ではありません

では、どこに置くのがベストなのか。

4

1 に答える 1

1

リポジトリ パターンを定説と見なさないでください。それは単なる概念です。したがって、UsersRepository には GetUsersRecentTask があり、GetUsersReport (タスクを含む) を含む ReportsRepository や Get[Object]Stats を含む StatisticsRepository などのさまざまなリポジトリがあります。

リポジトリ パターンはもともとビジネス オブジェクトのみを扱いますが、ビュー モデルやレポート データなどの「より少ない」オブジェクトが必要な場合は、依然として適切なパターンです (動作はありません)。したがって、ReportsRepository に特定のレポートを要求することは理にかなっています。

ビジネス オブジェクトを扱うリポジトリもあれば、DTO を扱うリポジトリもあることに注意してください。

于 2012-12-06T08:16:54.457 に答える