Как использовать AutoMapper.Формембер?



Я пытаюсь настроить AutoMapper для преобразования из сущности в DTO. Я знаю, что я должен использовать .ForMember() после Mapper.CreateMap<Entity, DTO>() создать пользовательское сопоставление, но это, кажется, не быть способ.



редактировать для разъяснения:
Я не ищу ссылку на документацию, которую я прочитал, или объяснение основного синтаксиса. Я использую правильный синтаксис, как описано в ответах и документации, например:



Mapper.CreateMap<EFAddress, Address>()
.ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));


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



есть ли какое-то ограничение на общие классы, которые я не встречаю?



спасибо

731   4  

4 ответов:

попробуйте следующий синтаксис:

Mapper
    .CreateMap<Entity, EntityDto>()
    .ForMember(
        dest => dest.SomeDestinationProperty,
        opt => opt.MapFrom(src => src.SomeSourceProperty)
    );

или если свойства источника и назначения имеют одинаковые имена просто:

Mapper.CreateMap<Entity, EntityDto>();

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

в конце концов, я считаю, что это оказалось какой-то несовместимостью с ReSharper.

ReSharper, похоже, вызвал неправильное отображение кода Automapper, но работает просто отлично (хотя он отображает красный цвет с сообщениями об ошибках). Удаление ReSharper полностью устранило эту проблему.

пример реализации будет выглядеть следующим образом:

Mapper.CreateMap<Game, GameViewModel>()
  .ForMember(m => m.GameType, opt => opt.MapFrom(src => src.Type))

нам нужно сопоставить это свойство, так как имена свойств Game И GameViewModel различны - если они одинаковы и одного типа, то ему не понадобится ForMember

другое использование ForMember-игнорировать сопоставления

Mapper.CreateMap<Game, GameViewModel>()
    .ForMember(dest => dest.Prize, opt => opt.Ignore());

вы делаете это

Mapper.CreateMap<SourceType,DestinationType>().ForMember(What ever mapping in here)

на этой странице есть несколько хороших примеров

Comments

    Ничего не найдено.