2016-09-16 2 views
0

Для моего проекта MVC, я модернизировал свои NuGet пакеты и получил последнюю версию AutoMapper от https://www.nuget.org/packages/AutoMapper/AutoMapper не работает после обновления 5.1.1

Это говорит IList поддерживается в качестве источника отображения; https://github.com/AutoMapper/AutoMapper/wiki/Lists-and-arrays

Он работал со старой версией, и я только обновил свой раздел конфигурации.

Конфигурация приведена ниже;

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    {   
     AutoMapperConfig.RegisterMappings();    
    } 
} 

public static void RegisterMappings() 
{ 
    Mapper.Initialize(cfg => 
    { 
     cfg.CreateMap<RssNewDto, RssNewViewModel>();  
    }); 
} 

// where I am trying to resolve 
[HttpGet] 
public IList<RssNewViewModel> ReadList() 
{ 
    // EXCEPTION 
    IList<RssNewViewModel> items2 = AutoMapper.Mapper.Map<IList<RssNewDto>, IList<RssNewViewModel>>(items); 
    return items2; 
} 

ERROR: AutoMapper.AutoMapperMappingException occurred
HResult=-2146233088 Message=Error mapping types. InnerException: HResult=-2146233088 Message=Missing type map configuration or unsupported mapping.

я упускаю что-то на конфигурации?

+0

то, что остальная часть сообщения исключений? Он должен включать информацию о недостающем типе. –

+0

@JimmyBogard после того, как я вызываю метод MapperConfiguration.AssertConfigurationIsValid, он показал мне все недостающие ошибки конфигурации. Я считаю, что это нужно называть внутренне после метода Initialize. Поскольку люди могут забыть вызывать этот метод, может быть неверный сконфигурированный Mapper, и он будет укусить их во время выполнения. –

+0

О да, я вижу, что многие люди это делают. Я не уверен в том, чтобы делать это на производстве, но я думаю, что я в меньшинстве. –

ответ

0

Ваш метод RegisterMappings создает только карту из RssNewDto в RssNewViewModel, а не из IList<RssNewDto> в IList<RssNewViewModel>.

Вы могли бы сделать это items.Select(item => AutoMapper.Mapper.Map<RssNewViewModel>(item)).ToList();

+1

Ну .. Если вы проверяете документацию, в нем говорится: «Нет необходимости явно настраивать типы списков, только их типы членов». Я мог бы попробовать ваше решение, но похоже, что это неправильный способ использования этой библиотеки. https://github.com/AutoMapper/AutoMapper/wiki/Lists-and-arrays –

+0

Право, списки автоматически поддерживаются. –

Смежные вопросы