Automapper опускает CreateMap, если используется соглашение об именах - PullRequest
0 голосов
/ 26 октября 2018

Исходя из этого вопроса, я хочу знать, могу ли я пропустить CreateMap<PERSON, Person>();

Я использую Automapper 7.0.1, и профиль имеет следующую форму

public class AutoMapperProfile : Profile
{
    public AutoMapperProfile()
    {
        //...
        //...

        SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
        DestinationMemberNamingConvention = new PascalCaseNamingConvention();
        CreateMap<PERSON, Person>(); //what I want to omit

    }
}

Я заметил, что если я удаляю эту строку CreateMap<PERSON, Person>();, то сопоставляются только свойства, которые не содержат подчеркивания, и mapper генерирует исключение с сообщением о том, что есть несопоставленные свойства и их список.

Почему мы хотим использовать CreateMap, когда мы хотим отобразить все свойства только на основе соглашения об именах?

EDIT:

После ответа @Lucian я удалил соглашение об именах из Profile и добавил его при инициализации, как это

Mapper.Initialize(cfg =>
{
    cfg.AddProfile<AutoMapperProfile>();
    cfg.SourceMemberNamingConvention = new UpperUnderscoreNamingConvention();
    cfg.DestinationMemberNamingConvention = new PascalCaseNamingConvention();
});

Теперь мне не нужно использовать CreateMap.

1 Ответ

0 голосов
/ 26 октября 2018

Карта по умолчанию (созданная AM, если вы опускаете CreateMap) является глобальной, она определенно не в том профиле, который вы создали. Так что настройка соглашений об именах в вашем профиле не поможет. Установите соглашения об именах в глобальной конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...