AutoMapper - Почему он перезаписывает весь объект?
Я не понимаю, почему это переписывает весь мой объект. Причина в том, что я получаю User
Объект из БД Я хочу назначить новые значения из DTO. Вместо того, чтобы просто добавлять эти новые значения, он создает новый объект, который имеет новые значения, но все предыдущие имеют значение null
,
Как я могу быть уверен, что в этом случае он "обновит" мой объект, а не создаст новый?
сценарий
/users/{id}
- ПОЛОЖИЛ
// User has id, username, fullname
// UserPut has fullname
public HttpResponseMessage Put(int id, UserPut userPut)
{
var user = _db.Users.SingleOrDefault(x => x.Id == id); // filled with properties
Mapper.CreateMap<UserPut, User>();
user = Mapper.Map<User>(userPut); // now it has only "fullname", everything else set to null
// I can't save it to db because everything is set to null except "fullname"
return Request.CreateResponse(HttpStatusCode.OK, user);
}
1 ответ
Решение
Mapper.Map
имеет перегрузку, которая принимает исходный и целевой объект. В этом случае Automapper будет использовать заданный объект назначения и не будет создавать новый объект.
Так что вам нужно переписать свой Mapper.Map
чтобы:
Mapper.Map<UserPut, User>(userPut, user);