2

Automapperを使用すると、小さなオブジェクトを大きなオブジェクトに投影できますか?

たとえば、コントローラーはデータを ViewModel インスタンスとして受け入れます。次に、データベースにレコードを作成する必要があります。したがって、このビュー モデルをドメイン モデルに投影します。ビュー モデル データを含むドメイン モデル インスタンスを作成したら、データベースにデータを保存する前に、ドメイン モデルの追加フィールドを手動で入力します。

そうすることは可能ですか?

ありがとう。

4

1 に答える 1

2

はい、これは完全に可能です。ViewModel からドメイン モデルへのマッピングを作成し、Ignore()存在しないプロパティを無視するために使用します。

.ForMember(dest => dest.PropertyOnDomainModel, opt => opt.Ignore()) 

小さな例:

public ActionResult Register(UserModel model)
{
    User user = Mapper.Map<User>(model);    
    user.Password = PasswordHelper.GenerateHashedPassword();
    _db.Users.Add(user);
    _db.SaveChanges();
}

この構成されたマッピングでは:

CreateMap<UserModel, User>()
    .ForMember(dest => dest.Password, opt => opt.Ignore());

これにより、パスワードが AutoMapper によって上書きされないようになります。

于 2013-10-29T14:57:46.730 に答える