Automapper-Map для строки

Я попытался создать сопоставление для строки с помощью следующего CreateMap():

Mapper.CreateMap<MyComplexType, string>()
    .ConvertUsing(c => c.Name);

Но когда я пытаюсь использовать это отображение, я получаю следующую ошибку:

Тип 'System.String' не имеет конструктора по умолчанию

Это имеет смысл, но я читал вокруг, и якобы это должно сработать. Есть ли что-то еще, что я должен сделать?

1 ответ

В моем случае я использовал

.ProjectTo<>()

Для прямого проецирования из коллекции DBContext (EF 6) в мой DTO, например

db.Configuration.LazyLoadingEnabled = false;
prospects = db.Prospects.Where([my where lambda]).ProjectTo<ProspectDTO>().ToList();

С пунктом назначения с IEnumerable<string> свойство, поступающее из связанной таблицы MM, т.е.

public class ProspectDTO 
{
   public IEnumerable<string> Brands { get; set; }
}

и мое решение отображалось следующим образом

AutoMapper.Mapper.CreateMap<Prospect, ProspectDTO>().ForMember(dest => dest.Brands, opts => opts.MapFrom(src => src.Brands.Select(b => b.Name)));

NB Я использую ProjectTo<>, как это, чтобы избежать общей проблемы отложенной загрузки select n+1 и обеспечить приличный (быстрый) запуск sql для БД, и у меня есть все необходимые данные таблицы, которые мне нужны. Отлично.

Спасибо, Джимми Богард, ты рок-звезда!!!

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