2

ASP.NET MVCプロジェクトに、製品を編集するためのフォームで使用されるViewModelがあるとします。他の多くのフィールドの中で、ドロップダウンにユーザーが選択できるようにする製品タイプのリストがあります。

ドメインオブジェクトをViewModelにマップするとき、サービスを呼び出してドメインオブジェクトをフェッチし、AutoMapperを使用してそれをViewModelにマップします。製品タイプのリストのドロップダウンを埋めるために、別のサービスを呼び出します。このサービスは、データベースからそのデータをフェッチし、それを使用してViewModelの別のプロパティにデータを入力します。

私が取り組んでいるのは、その呼び出しをカスタムValueResolverクラスに入れて、それを使用するようにマッピングを構成するよりも、コントローラーでそのセカンダリサービスを明示的に呼び出す方がよいかどうかです。

コントローラーから製品タイプサービスへの依存関係を削除する可能性は気に入っていますが(これらがたくさんあり、コントローラーが多くの依存関係になってしまうため)、この種のロジックを配置することを心配しています(データベースにアクセスする可能性があります)ValueResolverに入れることは、ValueResolverの不適切な使用であり、驚き最小の原則と呼ぶものに違反する可能性があります。(つまり、マッピングコードがデータベース要求を引き起こしているとは思わないでしょう。)

これはValueResolverを使用するための一般的なことですか?

4

1 に答える 1

1

AutoMapperメーリングリストJimmyBogardが回答しました:

ええ、それは間違いなく珍しいことではありません。ドロップダウンリストのデータソース....男、それらは私たちのViewModelの世界で理解するのが最も難しいものです。

POSTシナリオ、検証の失敗に関する情報の再入力などについて心配する必要があることに注意してください。

于 2013-01-02T21:29:17.863 に答える