Automapper: обновлять значения свойств без создания нового объекта - PullRequest
229 голосов
/ 03 марта 2010

Как я могу использовать automapper для обновления значений свойств другого объекта без создания нового?

Ответы [ 3 ]

392 голосов
/ 04 марта 2010

Используйте перегрузку, которая принимает существующее назначение:

Mapper.Map<Source, Destination>(source, destination);

Да, он возвращает целевой объект, но это только для некоторых неясных сценариев. Это тот же объект.

14 голосов
/ 12 апреля 2014

Чтобы сделать это, вы должны создать CreateMap для типов источника и назначения, даже если они одного типа. Это означает, что если вы хотите Mapper.Map<User, User>(user1, user2); Вам нужно создать карту, как это Mapper.Create<User, User>()

1 голос
/ 26 июня 2018

Если вы хотите использовать метод экземпляра IMapper, а не статический метод, используемый в принятом ответе, вы можете сделать следующее (проверено в AutoMapper 6.2.2)

IMapper _mapper;
var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Source, Destination>();
});
_mapper = config.CreateMapper();

Source src = new Source
{
//initialize properties
}

Destination dest = new dest
{
//initialize properties
}
_mapper.Map(src, dest);

dest теперь будет обновляться со всеми значениями свойств из src, которыми он поделился. Значения его уникальных свойств останутся прежними.

Вот соответствующий исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...