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

Automapper嵌套对象属性映射到目标类平铺属性失效问题

问题原因

你之前的配置尝试直接将嵌套对象映射到整个目标类实例,AutoMapper默认不会自动递归展开嵌套对象的属性和目标类做同名匹配,因此配置不生效。

正确配置方案

方案1:使用IncludeMembers(推荐,适配多同名属性场景)

AutoMapper提供了IncludeMembers方法专门用于将源类的嵌套成员作为附加映射源,自动匹配同名属性,无需逐个字段配置:

// 先定义嵌套类到目标类的映射
CreateMap<CreateManifestShipperDetailsDto, SCS_OUT_Manifest>();
// 上层源映射声明包含嵌套成员From
CreateMap<CreateManifestFromToDto, SCS_OUT_Manifest>()
    .IncludeMembers(src => src.From);

后续如果CreateManifestShipperDetailsDto和SCS_OUT_Manifest新增其他同名属性,无需修改映射配置即可自动适配。

注意:IncludeMembers方法需要AutoMapper 8.0及以上版本支持。

方案2:显式逐个指定映射规则(适配少量属性自定义场景)

如果需要映射的属性数量少,或者需要单独控制每个字段的映射逻辑,可以逐个指定映射关系:

CreateMap<CreateManifestFromToDto, SCS_OUT_Manifest>()
    .ForMember(dest => dest.ShipperAddress1, opt => opt.MapFrom(src => src.From.ShipperAddress1))
    .ForMember(dest => dest.ShipperAddress2, opt => opt.MapFrom(src => src.From.ShipperAddress2))
    .ForMember(dest => dest.ShipperAddress3, opt => opt.MapFrom(src => src.From.ShipperAddress3));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:09:03