我的行动如下:
public JsonResult Update(UpdateUserViewModel updateUser)
{
try
{
var existUser = _uow.Users.GetById(updateUser.UserId);
AutoMapper.Mapper.CreateMap<UpdateUserViewModel,User>();
var model = AutoMapper.Mapper.Map<User>(updateUser);
_uow.Users.UpdateEntity(model);
_uow.Save();
return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { Result = "ERROR", Message = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
UpdateUserViewModel
没有Password
属性,但User
属性,并且existUser
填充了model
。结果Password
包含existUser
属性,但不包含{{1}}中的值。
我不是我做错了什么。请指出正确的方向。
答案 0 :(得分:2)
使用
进行地图绘制时var model = Mapper.Map<User>(updateUser);
然后创建目标User
对象的新实例,并使用updateUser
中的数据填充。您应该从源对象映射到现有对象:
var existUser = _uow.Users.GetById(updateUser.UserId);
var model = Mapper.Map(updateUser, existUser);
// you even don't need model here
// just call Mapper.Map(updateUser, existUser) and use existUser
因此AutoMapper
将使用User
的现有实例,并使用UpdateUserViewModel
中的数据对其进行更新。
注意:在应用程序启动时创建一次映射会更好。