如何在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
相关产品推荐
相关产品推荐

