.NET Core 6中用AutoMapper编写[HttpGet]更新方法遇映射异常求助
.NET Core 6中AutoMapper映射异常排查与解决
问题场景
AutoMapper配置代码:
CreateMap<Product, UpdateProductViewModel>().ReverseMap().ForMember(x => x.Categories, opt => opt.MapFrom(src => src.Categories.Select(x => x.Text.ToString()).ToList()));
抛出异常的HttpGet方法:
[HttpGet] public IActionResult UpdateProduct(int id) { var product = _service.GetProductById(id); var mappedProduct = _mapper.Map<UpdateProductViewModel>(product); return View(mappedProduct); }
触发的异常信息:
AutoMapper.AutoMapperMappingException
HResult=0x80131500
Message=Error mapping types.
Source=
StackTrace:Inner Exception 1:
AutoMapperMappingException: Missing type map configuration or unsupported mapping.
错误原因
你把ForMember配置放在了ReverseMap()之后,这会导致该配置仅作用于UpdateProductViewModel → Product的反向映射,而当前业务需要的是Product → UpdateProductViewModel的正向映射,正向映射中Categories字段没有对应的转换规则,因此抛出映射异常。
修复方案
调整AutoMapper配置,将ForMember配置放在正向映射定义中,再调用ReverseMap():
CreateMap<Product, UpdateProductViewModel>() .ForMember(dest => dest.Categories, opt => opt.MapFrom(src => src.Categories.Select(x => x.Text.ToString()).ToList())) .ReverseMap();
同时需确认AutoMapper已正确注册到依赖注入容器,在Program.cs中添加:
builder.Services.AddAutoMapper(typeof(YourMappingProfileClass));
(将YourMappingProfileClass替换为你的AutoMapper配置类名称)
验证步骤
- 保存修改后的映射配置
- 重启应用程序
- 再次触发编辑更新操作,检查是否正常完成映射
内容的提问来源于stack exchange,提问作者Siphamandla Zolakhe
相关产品推荐
相关产品推荐

