2016-04-12 18 views
5

私はプロファイルでAutoMapperを使用していますが、うまくいきます。最近、CreateMissingTypeMaps設定が見つかりました。理解しているように機能していれば、開発を高速化し、必要ではない1回だけ簡単なマッピングを作成します。CreateMissingTypeMapsとAddProfileを持つAutoMapper

プロファイルにAddProfileのプロファイルを追加した後、CreateMissingTypeMapsの設定を行いました。

例:

-------コンフィギュレーションの作成------------

var config = new MapperConfiguration(cfg => 
{ 
    cfg.AddProfile<PersonServiceMapperProfile>(); 
    cfg.CreateMissingTypeMaps = true; 
}); 

-------私PersonServiceMapperProfileインサイド - ----

internal class PersonServiceMapperProfile : Profile 
{ 
    protected override void Configure() 
    { 
     CreateMap<PersonData, ProfileViewModel>().ConvertUsing<PersonDataToProfileViewModel>(); 
    } 
} 

CreateMissingTypeMaps設定をtrueに設定すると、プロファイルはもう機能しません。私のカスタムマッピングは呼び出されません。

この質問を解決するには?私は最近6にAutoMapper 3からのアップグレード後にこの同じ問題に走った、と私は、この問題への解決策を明らかにしたAutoMapperためのGitHubで問題を発見した

+0

これはまだ発生していますか? – Brad

+1

@ブラッド私はv3.3からv6にアップグレードしました。それは私に起こっています。私は、私がCreateMapを気にする必要のない多くの場所でDynamicMapを使用する方法を理解しようとしています(私は文字通り100以上の空のCreateMap呼び出しを持っています)。私がそれを把握すると、私はここに投稿します... – pbarranis

答えて

0

AddConditionalObjectMapperは()への道でありますあなたのアノテーションの型はマップされますが、デフォルトのマッピングは上書きされません。 CreateMissingtypeMapsでそれを使用しないでください。これは条件を上書きするためです。 CreateMissingTypeMapsは基本的にAddConditionalObjectMapper()です。ここで((s、d)=> true);

Source: Issue 2008, TylerCarlson1

しかし、これは "シンプルマッピング" のために使用すべきではありません。 CreateMissingTypeMaps機能は、EF動的プロキシなどのように、コンパイル時までマッピングがわからない場合にのみ使用されます。既知のタイプに使用すべきではない理由は、CreateMapとコンパイル機能により、タイプミス、名前の不一致、新しいプロパティや削除されたプロパティなどが原因で失敗したマッピングを迅速にテストして防ぐことができるからです。コンパイル機能を意図しているので、最大限活用してください。

関連する問題