忽略使用Automapper映射一个属性

我使用的是Automapper,我有以下情况:Class OrderModel有一个名为'ProductName'的属性,它不在数据库中。 所以当我尝试使用以下方法进行映射时:

Mapper.CreateMap<OrderModel, Orders>(); 

它会产生一个异常:

“Project.ViewModels.OrderModel上的以下1个属性未映射:'ProductName'

我已经在AutoMapper的Wiki for Projections中读过相反的例子(额外的属性在目标上,而不是源于实际上是我的情况)

我怎样才能避免automapper使这个属性的映射?


From Jimmy Bogard: CreateMap<Foo, Bar>().ForMember(x => x.Blarg, opt => opt.Ignore());

这是在他的博客的评论之一。


我可能是一个完美主义者, 我不太喜欢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表达式的方法的外观。


你可以这样做:

conf.CreateMap<SourceType, DestinationType>()
   .ForSourceMember(x => x.SourceProperty, y => y.Ignore());
链接地址: http://www.djcxy.com/p/37317.html

上一篇: Ignore mapping one property with Automapper

下一篇: Generating combinations of edges under a certain condition