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

如何在AutoMapper中忽略指定源属性,避免后续意外映射

在AutoMapper中明确忽略DTO的指定属性(避免未来实体新增属性后自动映射)

针对你担心的「未来实体新增同名属性后被AutoMapper自动映射」的问题,有三种直接的解决方式:

方法一:在映射配置中精准忽略源属性

在创建MyDto到MyEntity的映射规则时,使用ForSourceMember方法指定要忽略的DTO属性,并调用DoNotValidate()——这个配置会让AutoMapper完全跳过该属性的处理,无论目标实体是否存在同名属性,都不会尝试映射:

// 映射配置示例
var configuration = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<MyDto, MyEntity>()
        .ForSourceMember(dto => dto.DoNotMapMeToTheEntity, opt => opt.DoNotValidate());
});

方法二:用特性标记DTO属性

直接在DTO的目标属性上添加[IgnoreMap]特性,AutoMapper会自动识别并忽略该属性的映射,这种方式更简洁,适合单个属性的全局忽略:

public class MyDto
{
    int A { get; set; }
    int B { get; set; }
    
    [IgnoreMap]
    int DoNotMapMeToTheEntity { get; set; }
}

方法三:全局忽略同名属性

如果多个DTO都有需要忽略的同名属性(比如多个类都有DoNotMapMeToTheEntity),可以用AddGlobalIgnore一次性配置全局规则:

var configuration = new MapperConfiguration(cfg =>
{
    cfg.AddGlobalIgnore("DoNotMapMeToTheEntity");
    cfg.CreateMap<MyDto, MyEntity>();
});

以上三种方式都能确保DTO的指定属性不会被映射到实体,哪怕未来实体新增了同名属性也不会触发自动映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:05:05