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

使用AutoMapper映射同参数record类型时遇缺失映射配置错误

AutoMapper映射嵌套Record类型报错的解决办法

问题场景

尝试使用AutoMapper映射字段完全一致的Record类型时,触发如下错误:

Missing type map configuration or unsupported mapping.
Mapping types:
TadaLegalEmployerDto -> TadaLegalEmployerModel
EmployeeAndEmployer.Api.Models.TadaDtos.TadaLegalEmployerDto -> EmployeeAndEmployer.Api.Application.Queries.GetTadaLegalEmployer.TadaLegalEmployerModel
Destination Member:
LegalEmployer

相关代码

源类型

public record TadaGetLegalEmployerResponseDto(string data,
    TadaLegalEmployerDto LegalEmployer, string Starter);

public record TadaLegalEmployerDto(string SNationalId,
    string SRegistrationNumber, TadaCentralOfficeDto CentralOffice);

public record TadaCentralOfficeDto(string Province);

目标类型

public record TadaGetLegalEmployerResponseModel(string data,
    TadaLegalEmployerModel LegalEmployer,string Starter);

public record TadaLegalEmployerModel(string SNationalId,
    string SRegistrationNumber, TadaCentralOfficeModel CentralOffice);

public record TadaCentralOfficeModel(string Province);

当前映射配置

public class GetLegalEmployerResponseDtoToGetLegalEmployerResponseModel : Profile
{
    public GetLegalEmployerResponseDtoToGetLegalEmployerResponseModel()
    {
        CreateMap<TadaGetLegalEmployerResponseDto, TadaGetLegalEmployerResponseModel>();
    }
}

调用代码

var dto = await _myService.GetLegalEmployersAsync();
var resultModel = _mapper.Map<TadaGetLegalEmployerResponseModel>(dto);

问题原因

AutoMapper不会自动递归创建嵌套类型的映射规则,即使字段完全一致。你仅配置了顶层TadaGetLegalEmployerResponseDto到TadaGetLegalEmployerResponseModel的映射,但嵌套的TadaLegalEmployerDto→TadaLegalEmployerModel、TadaCentralOfficeDto→TadaCentralOfficeModel没有对应映射配置,导致报错。

解决方法

方法一:显式配置所有嵌套类型映射(推荐)

在同一个Profile中添加所有嵌套类型的映射规则,代码清晰且便于维护:

public class GetLegalEmployerResponseDtoToGetLegalEmployerResponseModel : Profile
{
    public GetLegalEmployerResponseDtoToGetLegalEmployerResponseModel()
    {
        CreateMap<TadaGetLegalEmployerResponseDto, TadaGetLegalEmployerResponseModel>();
        CreateMap<TadaLegalEmployerDto, TadaLegalEmployerModel>();
        CreateMap<TadaCentralOfficeDto, TadaCentralOfficeModel>();
    }
}

方法二:开启自动创建缺失映射(不推荐大型项目使用)

如果想让AutoMapper自动处理兼容的嵌套类型映射,可以在初始化配置时开启CreateMissingTypeMaps选项,但这种方式可能带来不必要的性能开销和潜在的映射风险:

var mapperConfig = new MapperConfiguration(cfg =>
{
    cfg.AddProfile<GetLegalEmployerResponseDtoToGetLegalEmployerResponseModel>();
    cfg.CreateMissingTypeMaps = true;
});
var mapper = mapperConfig.CreateMapper();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:07:39