我正在尝试忽略源类型的属性。我已经定义了这样的映射:
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?
答案 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
,并且希望忽略某些源属性的验证,那么这是完美的选择。