AutoMapper映射DailyCourses到DailyCoursesSearch报不支持映射错误
问题原因
你在调用AutoMapper映射方法时指定的目标类型错误:你配置的映射规则是DailyCourses -> DailyCoursesSearch,但测试代码的最后一行映射代码中,泛型参数误用了单数的单条数据模型DailyCourseSearch,而非你需要的复数集合模型DailyCoursesSearch。AutoMapper找不到DailyCourses到DailyCourseSearch的映射规则,因此抛出了对应异常。
修复方案
- 修正映射调用的目标类型即可解决问题:
// 错误写法 // mapper.Map<DailyCourseSearch>(dailyCourses); // 正确写法 var searchResult = mapper.Map<DailyCoursesSearch>(dailyCourses);
- 可选优化:
DailyCourses到DailyCoursesSearch的映射配置中,Items属性的手动映射可以删除,AutoMapper默认会自动匹配同名属性,只要你已经配置了内部元素DailyCourse到DailyCourseSearch的映射即可,简化后的映射配置如下:
var config = new MapperConfiguration(cfg => { cfg.CreateMap<DailyCourses, DailyCoursesSearch>(); cfg.CreateMap<DailyCourse, DailyCourseSearch>(); });
- 依赖注入场景补充说明:如果是在ASP.NET Core项目中使用AutoMapper,你需要把所有映射规则放到继承了
Profile的配置类中,AddAutoMapper方法才能自动扫描加载规则,示例如下:
public class CustomMappingProfile : Profile { public CustomMappingProfile() { CreateMap<DailyCourses, DailyCoursesSearch>(); CreateMap<DailyCourse, DailyCourseSearch>(); } }
只要该类放在Startup所在的程序集内,你原有services.AddAutoMapper(typeof(Startup).Assembly)的配置就可以正常生效。
内容的提问来源于stack exchange,提问作者purr
相关产品推荐
相关产品推荐

