.NET升级后AutoMapper出现未映射成员问题求助
解决AutoMapper从9.x升级到12.x后的未映射成员错误
问题根源
AutoMapper从9.x到12.x的版本里,默认映射规则有个关键变化:旧版本会自动忽略未匹配的成员,而新版本默认开启了严格校验模式,只要存在未映射的成员就会抛出异常,这就是你升级后报错的原因。
快速解决方案
方案1:全局恢复旧版忽略规则(最快省心)
在AutoMapper配置里添加全局设置,直接忽略所有未映射的成员:
// 独立配置方式 var mapperConfig = new MapperConfiguration(cfg => { cfg.IgnoreUnmapped(); // 核心设置:全局忽略未映射成员 // 你的其他映射配置,比如CreateMap<Source, Dest>() }); // .NET Core依赖注入配置方式 services.AddAutoMapper(cfg => { cfg.IgnoreUnmapped(); }, typeof(Program));
方案2:针对单个映射关闭严格校验
如果不想全局修改,也可以给指定的映射单独设置忽略未映射成员:
cfg.CreateMap<SourceType, DestinationType>() .ForAllOtherMembers(opt => opt.Ignore());
方案3:精准忽略特定成员(长期维护推荐)
要是想保留严格模式,只忽略确定不需要映射的成员,避免后续遗漏:
cfg.CreateMap<SourceType, DestinationType>() .ForMember(dest => dest.UnmappedPropA, opt => opt.Ignore()) .ForMember(dest => dest.UnmappedPropB, opt => opt.Ignore());
额外提示
- 升级AutoMapper前一定要看版本变更日志,10.x之后的版本有不少行为调整,严格模式是影响兼容性最大的一项。
- 长期来看,建议逐步清理冗余的映射成员或者补全必要的映射关系,依赖全局忽略可能会埋下潜在的映射错误隐患。
内容的提问来源于stack exchange,提问作者Sushant Rawat
相关产品推荐
相关产品推荐

