忽略使用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