Меня привели с таким же вопросом, но в отношении вложенных классов и сохранения значения назначения. Я пробовал выше любым способом, но у меня это не сработало, оказывается, вы должны использовать UseDestinationValue и для родительского объекта. Я оставляю это здесь на случай, если у кого-то еще возникнет та же проблема, что и у меня. Мне потребовалось некоторое время, чтобы заставить это работать. Я продолжал думать, что проблема заключается в AddressViewModel => Отображение адреса.
В классе BidderViewModel BidderAddress имеет тип AddressViewModel. Мне нужно было сохранить идентификатор адреса в ситуациях, когда он не нулевой.
Mapper.CreateMap<BidderViewModel, Bidder>()
.ForMember(dest => dest.BidderAddress, opt=> opt.UseDestinationValue())
.ForMember(dest => dest.ID, opt => opt.UseDestinationValue());
Mapper.CreateMap<AddressViewModel, Address>()
.ForMember(dest => dest.ID, opt => { opt.UseDestinationValue(); opt.Ignore(); });
Использование (где viewModel имеет тип BidderViewModel, возвращаемый представлением в MVC):
Bidder bidder = Mapper.Map<BidderViewModel, Bidder>(viewModel, currentBid.Bidder)