Так что проблема.Automapper, конфигурация сопоставления не сохраняется
Ive добавил
AutoMapperConfig.Configure();
к Application_Start в global.asax
он запускает код
Mapper.Initialize(x =>
{
x.AddProfile<DomainToViewModelMappingProfile>();
x.AddProfile<ViewModelToDomainMappingProfile>();
});
Mapper.AssertConfigurationIsValid();
, который работает
public class DomainToViewModelMappingProfile : Profile
{
protected override void Configure()
{
Mapper.CreateMap<DBO.User, ViewModels.UserViewModel>();
}
}
и
public class ViewModelToDomainMappingProfile : Profile
{
protected override void Configure()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<ViewModels.UserViewModel, DBO.User>();
});
}
}
и все скомпилировано и работает нормально.
но в контроллере:
UserViewModel model = new UserViewModel();
User user = userService.GetUser(2);
model = Mapper.Map<User, UserViewModel>(user); //this line fails as mapping doesnt exist
return View();
но если я добавить отображение конфигурации в методе контроллера
Mapper.CreateMap<ViewModels.UserViewModel,DBO.User>();
UserViewModel model = new UserViewModel();
User user = userService.GetUser(2);
model = Mapper.Map<User, UserViewModel>(user); //Works great
return View();
он работает отлично.
игнорировать различные синтаксисы с помощью automapper. Ive попробовал устаревший и новый способ картографирования и оба отказались.
Благодаря
Почему в классе 'ViewModelToDomainMappingProfile' вы вызываете' CreateMap' внутри 'Initialize'? Наверное, это твоя проблема. – MaKCbIMKo
из того, что я нашел в Интернете, это был новый способ создания сопоставлений, поскольку традиционный способ устарел. Как выясняется, это определенно проблема, поскольку традиционный способ работает, несмотря на то, что я сказал в уст, мои извинения. –
Правильно, но похоже, что вы называете это дважды. И похоже, что 'ViewModelToDomainMappingProfile' переопределяет все предыдущее сопоставление (из' DomainToViewModelMappingProfile'), потому что он вызывает 'Initialize' – MaKCbIMKo