使用ForSourceMember时,AutoMapper的Ignore()无法正常工作?

时间:2013-11-28 13:08:59

标签: c# mapping automapper automapper-3

我正在尝试忽略源类型的属性。我已经定义了这样的映射:

var map = AutoMapper.Mapper.CreateMap<Article, IArticle>();
map.ForSourceMember(s => s.DateCreated, opt => opt.Ignore());
map.ForSourceMember(s => s.DateUpdated, opt => opt.Ignore());

当我调用Map功能时,

AutoMapper.Mapper.Map(article, articlePoco);

目的地的属性无论如何都会得到更新。我正在使用从NuGet下载的最新稳定版本。

为什么这不起作用?

我发现了类似的问题,但没有附上答案。 [问题]:AutoMapper's Ignore() not working?

2 个答案:

答案 0 :(得分:6)

更改映射以使用ForMember:

map.ForMember(s => s.DateCreated, opt => opt.Ignore());
map.ForMember(s => s.DateUpdated, opt => opt.Ignore());

答案 1 :(得分:1)

如果仅要忽略的属性存在于源对象中,则可以MemberList.Source与选项方法DoNotValidate()组合使用。参见下文:

CreateMap<IArticle, Article>(MemberList.Source)
    map.ForSourceMember(src => src.DateCreated, opt=> opt.DoNotValidate());
    map.ForSourceMember(src => src.DateUpdated, opt => opt.DoNotValidate());

如果您使用的是AssertConfigurationIsValid,并且希望忽略某些源属性的验证,那么这是完美的选择。