为了账号安全,请及时绑定邮箱和手机立即绑定

忽略使用Automapper映射一个属性

忽略使用Automapper映射一个属性

C#
函数式编程 2019-11-25 14:40:28
我正在使用Automapper,并且有以下情况:类OrderModel具有一个名为'ProductName'的属性,该属性不在数据库中。因此,当我尝试使用以下方法进行映射时:Mapper.CreateMap<OrderModel, Orders>(); 它产生一个异常:“未映射Project.ViewModels.OrderModel上的以下1个属性:'ProductName'我已经在AutoMapper的Wiki for Projections中阅读了相反的情况(额外的属性在目标上,而不是在源中,这实际上是我的情况)如何避免自动映射器对此属性进行映射?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

我也许是个完美主义者。我不太喜欢ForMember(...,x => x.Ignore())语法。这是小事,但对我来说很重要。我写了这个扩展方法,使它更好一点:


public static IMappingExpression<TSource, TDestination> Ignore<TSource, TDestination>(

    this IMappingExpression<TSource, TDestination> map,

    Expression<Func<TDestination, object>> selector)

{

    map.ForMember(selector, config => config.Ignore());

    return map;

}

可以这样使用:


Mapper.CreateMap<JsonRecord, DatabaseRecord>()

        .Ignore(record => record.Field)

        .Ignore(record => record.AnotherField)

        .Ignore(record => record.Etc);

您也可以将其重写为与配合使用params,但我不喜欢带有大量lambda的方法的外观。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 2172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信