クラスAのエンティティを持つアプリケーションがあります。AにはフィールドBがあり、すべてではありませんが一部のビューモデルで使用されます。フィールドBは、別のソースから別のロード操作でロードされます。
このフィールドBのロードを担当するレイヤーはどれですか?私は3つの選択肢を見ます:
- Aにロジックを実装して、アクセスされるたびにBをロードします。これは機能しますが、Aクラスにいくつかのロジックが必要です。エンティティクラスには最小限のロジックが必要であり、データソースからのデータのロードに関連するロジックは確かにないはずだと思います(ただし、間違っている可能性があります)。
- データアクセス層(DAL)がAのインスタンスをロードするたびにBをロードします。これは、データソース(リモートサーバー)からのデータのロードが遅く、Aのインスタンスの一部のみがフィールドを必要とするため最適ではありません。 B。
- 必要に応じて、DALを使用してビューモデルにBをロードさせます。これは私(MVVMの方法に比較的経験の浅い人)がこれを行うための最も「MVVM-y」の方法であるように思われます。
#3は、「正しく機能する」要素に関しては、#1に比べて「エレガント」ではないようです(#1を使用すると、フィールドBにアクセスするとデータソースから自動的にロードされます)。しかし、#3は、エンティティオブジェクトにさらにデータをロードする責任が与えられていないため、関心の分離をより適切に分離しているようです。