5

Automapper を使用してドメイン オブジェクト (モデル) をビュー モデルにマップする方法について多くの人が書いていますが、これは非常に興味深く有用だと思いますが、私の質問はその反対の方法についてです。このプロセスの複雑さと、Automapper がそのシナリオで機能しない理由は理解していますが、特に更新時に、フォームの投稿で多くのことをしなければなりません。

モデルがあり、それをビュー モデルにマップしてから、ユーザーにフォームを提示します。次に、フォームが投稿され、モデルが非常に複雑になる可能性があるため、カスタム ModelBinders を使用して応答を処理し、直接永続化されない新しいモデルを構築します。代わりに、元のモデルを DB から読み込み、メソッドを呼び出して、投稿された元から何も壊さずに更新します。しかし、これは繰り返しになり、より良いアプローチがあるかもしれません。

私が見た例は非常にモデルが限定されていて素朴ですが、私たちのアプリケーションでは、このような 50 以上のフォーム投稿シナリオがあり、成長している可能性があります。

4

1 に答える 1

3

反対方向に行きたい場合は、最初に反対方向へのマップを作成します Mapper.Map()

次に、型コンバーター (Mapper.CreateMap().ConvertUsing()) を作成することをお勧めします。

次に、宛先値を無視または使用する必要がある場合があります。これは、ForMember(entity => entity.Id, opt => opt.Ignore()) または ForMember(entity => entity.ChildCollection, opt => opt.UseDestinationValue()) で構成できます。

最後に、既存の宛先オブジェクト Mapper.Map(dto, entity) を受け取るオーバーロードを使用します。

于 2009-10-16T13:06:55.127 に答える