Ignore () AutoMapper не работает при использовании ForSourceMember?
Я пытаюсь игнорировать свойство из типа источника. Я определил отображение следующим образом:
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.
Есть идеи, почему это не работает?
Я нашел подобный вопрос к этому, но нет никакого прикрепленного ответа. [вопрос]: Ignore() AutoMapper не работает?
1 ответ
Решение
Измените отображение для использования ForMember:
map.ForMember(s => s.DateCreated, opt => opt.Ignore());
map.ForMember(s => s.DateUpdated, opt => opt.Ignore());
Если свойство, которое вы хотите игнорировать, существует только в исходном объекте, вы можете 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
и хотите игнорировать проверку определенных свойств источника.