2016-09-16 72 views
0

對於我的MVC項目工作後,我升級我的NuGet包,並從 https://www.nuget.org/packages/AutoMapper/AutoMapper不升級5.1.1

它說的IList支持作爲映射源得到了最新版本AutoMapper的; 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方法之後被內部調用。由於人們可能忘記調用這個方法,可能會有無效的配置映射器,它會在運行時咬他們。 –

+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

對,列表自動支持。 –