2011-02-24 35 views
1

私はいくつかの記事を読んで、MvcConf 1のビデオを見ましたが、Jimmy BogardはAutoMapperの使用法を示していますが、まだ混乱しています。AutoMapperの使用について混乱しています

私は、たくさんのプロパティを持つUser POCOクラスを持っています。私はまた、Userクラスのプロパティのサブセットを含むRegisterViewModelクラスを持っています。ユーザーが登録すると、ビューに渡された空のRegisterViewModelインスタンスにデータが埋め込まれます。このデータをデータベースに追加するには、Userインスタンスにマップする必要がありますが、Userには、DateTime.Nowに割り当てられるRegistrationDateのようなデフォルトのプロパティが必要です。この場合、私は何をしますか?

また、Userインスタンスを更新しているとします。まず、データベースからデータを取得し、それをUpdateUserViewModelクラスにマップする必要があります。その後、ユーザーが変更をサブミットすると、その変更はUserインスタンスに戻されなければなりません。この場合、設定ファイルに2つの別々のMapper.CreateMap <>()エントリを実行する必要がありますか、それともAutoMapperが自動的にそれを行いますか?

私はそれが今のところだと思います、あなたの助けが高く評価されます! AutoMapperは自動的に双方向のマッピングを定義していないので、あなたは二つの別々のマッピングを必要とする2番目のシナリオについて

Mapper 
    .CreateMap<RegisterViewModel, User>() 
    .ForMember(
     dest => dest.RegistrationDate, 
     opt => opt.UseValue(DateTime.Now) 
    ); 

::)

答えて

5

は、最初のシナリオでは、あなたはそれらのはあなたのマッピングでプロパティを行方不明定義することができます。

Mapper.CreateMap<UpdateUserViewModel, User>(); 
Mapper.CreateMap<User, UpdateUserViewModel>(); 
+0

私は見る。大変ありがとうございました!私はAutoMapperで遊んで、もっと慣れ親しんでみるつもりです。 – Kassem

+1

UseTimeue with DateTime.Nowは正しくありません。毎回同じ日付になり、バグを追跡するのが難しくなるためです。これを見てください:http://automapper.codeplex.com/workitem/4056 – andreialecu

関連する問題