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

如何仅验证Automapper从Dto到Entity方向的映射

仅验证AutoMapper中Dto到Entity的单向映射方案

要实现仅验证Dto到Entity方向的映射,同时忽略反向验证,可按以下步骤操作:

1. 仅配置单向映射

确保只创建Dto到Entity的映射规则,不要添加反向的CreateMap<Entity, Dto>配置。以你的示例为例:

var configuration = new MapperConfiguration(cfg =>
{
    // 仅配置UserDto → User的单向映射,不定义反向映射
    cfg.CreateMap<UserDto, User>();
});

2. 定向验证映射配置

使用ValidationContext精准控制验证规则,只检查Dto到Entity的映射有效性:

var validationContext = new ValidationContext(configuration)
{
    // 关闭源成员验证:不检查Entity的属性(如User.Username)是否在Dto中存在
    ValidateSourceMemberNames = false,
    // 开启目标成员验证:检查Dto的属性(如UserDto.Lastname)是否能在Entity中找到对应
    ValidateDestinationMemberNames = true,
    // 指定仅验证UserDto到User的映射(可选,若你有多个映射时更精准)
    MapsToValidate = new[] { configuration.FindTypeMapFor<UserDto, User>() }
};

// 执行验证
configuration.AssertConfigurationIsValid(validationContext);

验证效果说明

  • 对于UserDto.Lastname,因为User中对应的属性是LastName(大小写差异),验证会抛出未找到目标成员的错误,符合你的需求;
  • 对于User.Username,由于关闭了源成员验证,不会检查UserDto是否包含该属性,因此不会触发错误。

额外注意

如果之前不小心配置了反向映射(CreateMap<User, UserDto>),需要删除该配置,否则验证仍会检查反向映射的有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:01:22