You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AutoMapper遇AutoMapperMappingException:缺失类型映射配置求助

解决AutoMapper的"Missing type map configuration"异常

我看了你的代码,问题主要出在属性名称拼写不一致和一些小细节上,下面一步步帮你排查修复:

1. 修正集合属性的名称大小写

你的实体类Entities.MyClass里的集合属性是SKills(注意字母K是大写),但契约类的MyClass里对应的是Skills(k是小写)。AutoMapper默认是区分大小写的名称匹配,这就导致它找不到对应的映射源,直接抛出异常。

你有两种修复方式:

  • 统一属性名称:把实体类里的SKills改成Skills,和契约类保持一致:
    // 实体类MyClass修改后
    public class MyClass {
        public int Id { get; set; }
        public int StatusId { get; set; }
        public Status Status { get; set; }
        public ICollection<SKill> Skills { get; set; } // 把SKills改成Skills
    }
    
  • 手动指定映射关系:如果不想改实体类名称,就在映射配置里给这个属性加ForMember配置:
    CreateMap<Entities.MyClass, MyClass>()
        // 手动映射Skills集合
        .ForMember(dest => dest.Skills, opt => opt.MapFrom(src => src.SKills));
    

2. 简化冗余的映射配置

你写的.ForMember(dest => dest.Status, src => src.MapFrom(x => x.Status))其实是多余的——因为源和目标的属性名称都是Status,类型也完全一致,AutoMapper会自动处理这个映射,删掉这行能让配置更简洁。

3. 确认基础类型映射的有效性

你已经配置了CreateMap<Entities.SKill, Skill>()和CreateMap<Entities.Status, Status>(),这点没问题,但要确保Entities.SKill和契约类Skill的属性名称、类型都能一一匹配,AutoMapper才能自动映射每个成员。

完整修复后的映射配置

// 基础类型映射
CreateMap<Entities.SKill, Skill>();
CreateMap<Entities.Status, Status>();
// MyClass的映射(如果统一了属性名称,无需额外配置)
CreateMap<Entities.MyClass, MyClass>();

额外提示:避免同名类混淆

你的实体类和契约类都叫MyClass,虽然应该在不同命名空间下,但编码时很容易搞混,建议给契约类加个后缀(比如MyClassDto),这样代码可读性更高,也能避免潜在的命名冲突。

内容的提问来源于stack exchange,提问作者joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:12:11