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

Automapper映射时Ignore配置不生效,未映射属性被置空如何解决

问题原因

你使用的是AutoMapper的_mapper.Map<UserModel>(item)重载,该重载的逻辑是全新创建一个UserModel实例,将源对象属性映射到新实例后返回。你的代码中将新实例直接赋值给了existing变量,直接丢弃了从数据库查询得到的原有实例,原有实例的UserId、Alias属性自然无法保留,该问题和你配置的Ignore规则无关。

解决方法

使用AutoMapper支持「映射到现有目标对象」的重载_mapper.Map<TSource, TDestination>(TSource source, TDestination destination)即可,该重载会直接修改传入的现有目标实例,仅更新配置了映射关系的属性,标记为Ignore的属性会保留原有值,你现有的映射Profile配置无需修改。

修改后的业务代码如下:

private void FindUpdatedUsers(IEnumerable<UserModel> existingUsers, IEnumerable<ADModel> adUsers)
{
    foreach (var item in adUsers)
    {
        var existing = existingUsers.First(e => string.Equals(e.Surname, item.Surname, StringComparison.InvariantCultureIgnoreCase));
        // 直接将ADModel属性映射到已有的existing实例,不需要重新赋值
        _mapper.Map(item, existing); 
        _userService.Update(existing);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:45:02