Automapper配置问题:ASP.NET Core中一类映射两类反向映射报错
解决AutoMapper 12.0.0中B2到A的双向映射失败问题
针对你遇到的B2转A时提示AutoMapperMappingException: Missing type map configuration or unsupported mapping的问题,可从以下几个方向排查和解决:
1. 调整AutoMapper注册方式
当前通过services.AddAutoMapper(typeof(ModelMapper))依赖程序集扫描加载Profile,部分场景下可能出现扫描遗漏。改为显式添加Profile的注册方式,确保配置被正确加载:
services.AddAutoMapper(config => { config.AddProfile<ModelMapper>(); });
2. 替换ReverseMap为显式双向映射
虽然ReverseMap()理论上会自动生成反向映射,但如果存在版本兼容或配置解析异常,可尝试显式定义双向映射,避免依赖自动生成逻辑:
public class ModelMapper : AutoMapper.Profile { public ModelMapper() { // A与B1双向映射 CreateMap<A, B1>(); CreateMap<B1, A>(); // A与B2双向映射 CreateMap<A, B2>(); CreateMap<B2, A>(); } }
3. 验证映射是否正确加载
在使用映射前,可通过IMapper的配置提供器验证映射是否存在,快速定位加载问题:
// 注入IMapper后执行验证 bool hasB2ToAMap = _mapper.ConfigurationProvider.HasMapFor<B2, A>(); if (!hasB2ToAMap) { // 映射未被加载,需检查注册逻辑或Profile类的访问修饰符 }
4. 检查类型属性匹配规则
确保A和B2的属性名称、类型基本匹配,若存在名称不匹配的属性,需通过ForMember显式配置映射规则,否则可能导致映射解析失败:
CreateMap<B2, A>() .ForMember(dest => dest.TargetProperty, opt => opt.MapFrom(src => src.SourceProperty));
内容的提问来源于stack exchange,提问作者Yván Ecarri
相关产品推荐
相关产品推荐

