web-dev-qa-db-ja.com

複数のリポジトリを持つViewModelは悪いですか?

私はMVVMでプロジェクトに取り組んでいます。一部のViewModelには複数のリポジトリがあります。

  • 複数のリポジトリを持つViewModelは不良ですか?
  • 良い/悪い理由を教えてください。
4
Amir Rezaei

良い

ViewModelの目的は、データが格納されている場所を抽象化することです。これにより、ビューは、ユーザーにとって意味のある方法でデータを表示できますが、バックエンドに一致するデータである必要はありません。たとえば、SQLのクエリからのデータとWebサービスからのデータがあり、そのデータを拡張する場合、単一のViewModelを使用してそれをビューにプッシュすると、設計されたとおりのことを実行していると私は言う。ビューの複数のリポジトリに格納されているデータの複雑さを抽象化しているため、どのビューを使用する場合でも、使いやすく簡潔なViewModelを使用できます。

例:

収集して表示する必要のあるデータがいくつかあります。

  1. 私のデータベースの連絡先テーブル:UserID、FName、LName、Email
  2. 私と一致する求人はIndeedJob SearchAPIからのものです
  3. StackApps APIからの私の履歴書(C#やJavaジョブ)など、Indeedを介してジョブを選択するために使用されたものに関する背景情報を表示したい。

これらすべてをViewModelにまとめます。

  1. FirstName、LastName、JobsのArrayList、および私の履歴書からの関連用語のArrayList。

これらすべての情報を単一のページに表示したいので、単一のViewModelアプローチにより、ビューに表示できる単一のオブジェクトが得られます。 1つのビューに複数のViewModelがある場合、またはビュー自体でその集計と計算を実行しようとする場合、パターンの利点を損なうため、通常のASP.NET/Silverlight/whateverに戻ることもできます。モデルが変更された場合、それらのリポジトリーがViewModelに到達する方法を変更できますが、Viewはデータがどこから来ているかではなく、ViewModelのみを対象としているため、対象外です(必要ありません)。

3
Ryan Hayes