Как настроить AutoMapper, чтобы он не проверял список участников при отображении? - PullRequest
1 голос
/ 03 июня 2019

Я создаю карты, как показано ниже, передавая список участников в None:

CreateMap<Level, LevelVM>(MemberList.None);

Но я не хочу делать это для каждой создаваемой карты.Я хотел бы, чтобы этот параметр применялся глобально, по умолчанию.Есть ли способ добиться этого?

1 Ответ

1 голос
/ 03 июня 2019

По умолчанию AutoMapper пытается сопоставить все свойства типа источника с типом назначения. Если некоторые свойства недоступны в целевом типе, они не вызовут исключение при выполнении сопоставления. Однако при использовании ValidateMapperConfiguration () будет выдано исключение.

  class SourceType
    {
        public string Value1 { get; set; }
    }


class DestinationType
{    
    public string Value1{ get; set; }
    public string Value2{ get; set; }
}

AutoMapper.AutoMapperConfigurationException: следующее 1 свойства на DestinationType не отображаются: Value2 Добавить пользовательский сопоставление выражения, игнорирование или переименование свойства в SourceType.

Вы можете переопределить это поведение, установив Глобальный параметр, чтобы игнорировать все свойства, которые не существуют в целевом типе. Вы можете сделать настройку на уровне класса или на уровне свойства или на глобальном уровне, как я сказал

Просто добавьте следующий код в Global.asax

Mapper.Initialize(cfg =>
    {
       cfg.ValidateInlineMaps = false
    }

В свойстве level игнорирует свойство Value2 при сопоставлении этих двух объектов. Для этого нам нужно использовать свойство Ignore AutoMapper со свойством Address

config.CreateMap<SourceType,DestinationType>()
                    //Ignoring the Value2  property of the destination type
                    .ForMember(dest => dest.Value2 , act => act.Ignore());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...