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

Automapper配置验证异常:使用DoNotUseDestinationValue仍无法忽略目标属性

问题原因

你混淆了DoNotUseDestinationValue()和Ignore()两个方法的作用:
DoNotUseDestinationValue()的作用是:当调用mapper.Map(source, existingDestination)这类映射到已有目标对象的重载时,不会复用目标对象上该属性的现有值,强制按照映射规则重新赋值。它不会跳过Automapper的属性映射校验,因此Automapper依然会认为ListString是未配置映射规则的属性,触发校验异常。

解决方案

根据你的实际使用场景选择对应配置:

场景1:不需要对ListString做任何映射处理

如果仅需要让校验不报错、Automapper不对该属性做任何赋值,直接用Ignore()方法标记即可:

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<ClassDto, ClassModel>()
        .ForMember(i => i.ListString, opt => opt.Ignore()); 
});

场景2:需要给ListString指定映射规则且不复用目标原有值

如果你需要主动给ListString赋值,同时需要关闭目标原有值的复用,可以组合使用对应方法,比如固定赋值为空列表:

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<ClassDto, ClassModel>()
        .ForMember(i => i.ListString, opt => 
        {
            opt.MapFrom(_ => new List<string>());
            opt.DoNotUseDestinationValue();
        }); 
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:54:04