自动映射 - 映射除目标中不存在的属性之外的所有属性

时间:2018-04-13 16:18:10

标签: c# automapper automapper-3

使用Automapper 3(升级不是一个选项),我想知道如何将实体(src)映射到目标中的属性不存在于源中的目标?

让我们在目的地中调用一些非映射的属性" temp"或"计算"属性。当然,在映射时,AM会失败,因为在源中找不到目标中的属性。

CreateMap<SystemConfiguration, SystemConfigurationModel>()
                .ForMember(dest => dest.UserRulesModel, opt => opt.MapFrom(src => src.UserRules));

在&#34; UserRulesModel&#34;中,我有这个临时属性。我希望AM在从实体(DB)映射到View Model(UserRulesModel)时忽略它

更新:UserRulesModel是一个集合,UserRules也是如此。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在创建从UserRulesUserRulesModel的地图时进行配置:

CreateMap<UserRules, UserRulesModel>()
    .ForMember(dest => dest.Temp, opt => opt.Ignore());

<强>更新

我们说UserRulesUserRuleItem个对象的集合,UserRulesModelUserRuleModelItem个对象的集合。

如果UserRuleModelItem中存在UserRuleItem中没有的属性,则可以使用我最初发布的语法将AutoMapper配置为忽略该属性:

CreateMap<UserRuleItem, UserRuleModelItem>()
    .ForMember(dest => dest.Temp, opt => opt.Ignore());

dest的类型将是您要映射到的对象的类型,在这种情况下为UserRuleModelItem