「受け入れられた方法」は、一般的にあなたにとって最も効果的な方法です。
AutoMapperのことは聞いたことがありません。調べてみると、特定の規則に従って魔法のオブジェクトマッピングが作成されることがわかりました。
スクリーンキャスト:http ://www.dnrtv.com/default.aspx?showNum = 155
注:私はそのスクリーンキャストの約半分しか見ていなかったので、AutoMapperについての私の考えはやや不完全です。
オブジェクトのプロパティ(コード、IMO、コンストラクターロジックに残しておく方がよい)間でマップ/「フラット化」するための追加のコードを作成する必要があるため、個人的には使用したくありません。スクリーンキャストの例では、そのコードは通常、肥大化につながる可能性のあるコントローラーのアクションメソッドに配置されます(スキニーコントローラー/アクションが好きです)
モデルのコンストラクターにオブジェクトを取得してすべての作業を行わせるという、投稿で指定したメソッドを使用します。
さらに、ViewModelオブジェクトのプロパティ値を手動で設定できるように、パラメーターをとらない空のコンストラクターを常に作成します。
例:
CustomViewModel myModle = new CustomViewModle
{
Property1 = "Something",
Property2 = 3,
//etc..
};
要約すると、両方の方法を試して、何が効果的かを確認してください。AutoMapperは素晴らしいアイデアであり、多くの状況で役立つことがわかりますが、AutoMapperを使用すると、オブジェクトコンストラクターを使用する場合と同じくらい多くのコードを記述できるようになると思います。