Как использовать 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 говорит, что он не может разрешить символ, как будто метод недоступен.
есть ли какое-то ограничение на общие классы, которые я не встречаю?
спасибо
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