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

AutoMapper复杂对象映射报错:缺失类型映射配置该如何解决?

解决AutoMapper复杂对象集合映射的「Missing type map configuration or unsupported mapping」异常

问题场景

我用AutoMapper实现简单对象映射时运行正常,相关代码如下:

简单对象定义

public class Source
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Destination
{
    public int Id { get; set; }
    public string Name { get; set; }
}

映射使用代码(SampleClass.cs)

using AutoMapper;

public class SampleClass
{
    private IMapper _mapper;
    public SampleClass(IMapper mapper)
    {
        _mapper = mapper;
    }

    public void Logic(Source source)
    {
        var dest = _mapper.Map<Destination>(source);
    }
}

但当映射包含集合的复杂对象时,执行映射代码抛出「Missing type map configuration or unsupported mapping.」异常,复杂对象结构及映射代码如下:

复杂对象定义

public class Source
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<SourceChild> lstChild { get; set; }
}

public class SourceChild
{
    public string Address { get; set; }
}

public class Destination
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<SourceDestination> lstChild { get; set; }
}

public class SourceDestination
{
    public string Address { get; set; }
}

报错的映射代码

public void Logic(Source source)
{
    var dest = _mapper.Map<Destination>(source);
}

解决方案

你需要补充AutoMapper的映射配置,明确主对象之间以及子对象之间的映射关系,具体步骤如下:

  1. 创建映射Profile类
    定义一个继承自Profile的类,在构造函数中配置所有需要的映射规则,包括主对象和子对象的映射:

    using AutoMapper;
    
    public class MappingProfile : Profile
    {
        public MappingProfile()
        {
            // 配置主对象映射
            CreateMap<Source, Destination>();
            // 配置子对象映射(AutoMapper会自动处理集合映射,只要子对象映射规则存在)
            CreateMap<SourceChild, SourceDestination>();
        }
    }
    
  2. 注册AutoMapper并加载Profile
    在项目的依赖注入配置中(比如ASP.NET Core的Program.cs或Startup.cs),注册AutoMapper并指定要加载的Profile:

    // .NET 6+ Program.cs示例
    builder.Services.AddAutoMapper(typeof(MappingProfile));
    
  3. 修正代码拼写错误
    注意你原代码中Logic方法的参数写成了Souce(少了一个r),需修正为Source,否则会出现编译错误。

完成以上配置后,AutoMapper就能正确识别集合中子对象的映射规则,顺利完成复杂对象的映射。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:13:27