Automapperを使用すると、小さなオブジェクトを大きなオブジェクトに投影できますか?
たとえば、コントローラーはデータを ViewModel インスタンスとして受け入れます。次に、データベースにレコードを作成する必要があります。したがって、このビュー モデルをドメイン モデルに投影します。ビュー モデル データを含むドメイン モデル インスタンスを作成したら、データベースにデータを保存する前に、ドメイン モデルの追加フィールドを手動で入力します。
そうすることは可能ですか?
ありがとう。
Automapperを使用すると、小さなオブジェクトを大きなオブジェクトに投影できますか?
たとえば、コントローラーはデータを ViewModel インスタンスとして受け入れます。次に、データベースにレコードを作成する必要があります。したがって、このビュー モデルをドメイン モデルに投影します。ビュー モデル データを含むドメイン モデル インスタンスを作成したら、データベースにデータを保存する前に、ドメイン モデルの追加フィールドを手動で入力します。
そうすることは可能ですか?
ありがとう。
はい、これは完全に可能です。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 によって上書きされないようになります。