2016-08-04 15 views
2

VS2015で開発されたasp.net mvcアプリケーションがあります。 Global.asax.csのApplication_StartメソッドでAuto Mapper v4.2.1 - タイプマップ設定が見つからないか、サポートされていないマッピング

以下を含むメソッドが呼び出されます。

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>()); 
Mapper.Initialize(cfg => cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>()); 

私は、これはブレークポイントを追加することで実行を受けるんことを確認しました。

私のコントローラで

、私は次のようしている。このラインで

faultVmRec = Mapper.Map<Fault, FaultVmRec>(item); 

を、私は例外を取得しています:

{ "ミッシング型マップの設定またはサポートされていないマッピング\ rを\。 n \ r \ nマッピングの種類:\ r \ nFault-> FaultVmRec \ r \ nLGSS.Unit4.BamPortal.Domain.ESB.Fault-> LGSS.Unit4.BamPortal.Website.Models.FaultVmRec \ r \ n \ r \ n宛先パス:\ r \ nFaultVmRec \ r \ n \ r \ nソース値:\ r \ nSystem.Data.Entity.DynamicProxies.Fault_805BF7128A26886D33A8989DFA212C8E378EDADE588B0922B23ECFE7F697D907 "}

私は明示的に次のようにマップを実行する前にマッピングを初期化するためで貼り付ける場合

しかし、:

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>()); 
faultVmRec = Mapper.Map<Fault, FaultVmRec>(item); 

を次にそれが正常に動作します!

誰かが間違っているのを見てください。

+0

をなぜあなたはちょうどMapper.Initialize 'のような何かをしないだろう(CFG => {cfg.CreateMap <>(); cfg.CreateMap <>(); 'さらに、プロファイルを使用しないでください。 –

答えて

5

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>)); Mapper.Initialize(cfg => cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>());

このコードスニペットは、お互いを上書き。 Initialize

Mapper.Initialize(cfg => { 
    cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>(); 
    cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>(); 
    cfg. 
    cfg... //so on 

}); 
2

コールは、新しい構成をインスタンス化:あなたはとして設定する必要があります。このようにそれらを組み合わせる:あなたは潜在的な実行時エラーdocumented hereキャッチするために初期化した後も

Mapper.Initialize(cfg => { 
    cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>(); 
    cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>(); 
}); 

では、設定を検証する必要があります。

Mapper.Configuration.AssertConfigurationIsValid(); 
関連する問題