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 и хотите игнорировать проверку определенных свойств источника.

Другие вопросы по тегам