2017-03-16 4 views
0

私は、CreateMissingTypeMapsと手動マッピングを「同時に」(または少なくとも同じ設定で)使用する必要がある状況があります。EFプロキシクラスでCreateMissingTypeMapsオプションと手動マッピングを使用する方法

シナリオ:ドメインとビューモデルクラスは、プロファイルを使用して手動でマップされます。 CreateMissingTypeMapsプロパティは、匿名オブジェクトを返すレガシーシステムにアクセスするためのアンチクラッシュレイヤーがあるため、必要です。

問題は、手動マッピングでCreateMissingTypeMapsオプションがtrueに設定されていて、それが偽である場合に匿名オブジェクトをマップできない場合、そのマッピングがオーバーヒートされてしまうことです。

MapperConfiguration内、プロファイル内、マッピング条件付きのプロファイル内でCreateMissingTypeMapsを設定しようとしましたが、すべてが失敗しました。

以下のコードは、匿名オブジェクトにのみ適用する必要がある条件付きプロファイルを実行しようとしたものです。

public class AnonymousProfile : Profile 
    { 
     public AnonymousProfile() 
     { 
      AddConditionalObjectMapper().Where((s, d) => s.GetType().IsAnonymousType()); 
      CreateMissingTypeMaps = true; 
     } 
    } 

    // inside my MapperConfiguration 
    cfg.AddProfile(new AnonymousProfile()); // also tried cfg.CreateMissingTypeMaps = true; 

[EDIT:]元の質問には、EFについては言及しなかったが、私はそのプロキシクラスが問題の一部であることを発見しました。

+0

問題を再現するサンプルコードを提供してもらえますか? –

+0

@IvanStoev EFプロキシクラスを使用したときに問題が発生したことを発見したときに、短いデモコードを書いていました。その間、私の質問はGithubに答えられました。今私は自分自身の質問に答えを書いています。私の質問に興味をお持ちいただきありがとうございます。 –

答えて

0

Tyler on Githubが指し示すtheseの指示に従ってコードをリファクタリングしました。

public class AnonymousProfile : Profile 
{ 
    public AnonymousProfile() 
    { 
     AddConditionalObjectMapper().Where((s, d) => 
      s.IsAnonymousType() && s.Namespace != "System.Data.Entity.DynamicProxies"); 
    } 
} 
:マイ anonymous type check

  1. は(私ははgettypeを使用しないでください)System.Data.Entity.DynamicProxiesから
  2. オブジェクトが

マイ書き換えAnonymousProfileクラスを無視する必要があるバグがありました

関連する問題