ASP.NET MVCプロジェクトに、製品を編集するためのフォームで使用されるViewModelがあるとします。他の多くのフィールドの中で、ドロップダウンにユーザーが選択できるようにする製品タイプのリストがあります。
ドメインオブジェクトをViewModelにマップするとき、サービスを呼び出してドメインオブジェクトをフェッチし、AutoMapperを使用してそれをViewModelにマップします。製品タイプのリストのドロップダウンを埋めるために、別のサービスを呼び出します。このサービスは、データベースからそのデータをフェッチし、それを使用してViewModelの別のプロパティにデータを入力します。
私が取り組んでいるのは、その呼び出しをカスタムValueResolverクラスに入れて、それを使用するようにマッピングを構成するよりも、コントローラーでそのセカンダリサービスを明示的に呼び出す方がよいかどうかです。
コントローラーから製品タイプサービスへの依存関係を削除する可能性は気に入っていますが(これらがたくさんあり、コントローラーが多くの依存関係になってしまうため)、この種のロジックを配置することを心配しています(データベースにアクセスする可能性があります)ValueResolverに入れることは、ValueResolverの不適切な使用であり、驚き最小の原則と呼ぶものに違反する可能性があります。(つまり、マッピングコードがデータベース要求を引き起こしているとは思わないでしょう。)
これはValueResolverを使用するための一般的なことですか?