1

Automapper を使用して、エンティティ (EF/データベースから) をビュー モデルにマップします。Classification私たちのプロジェクトは、それぞれがプロパティを持つ一連のプロパティを持つと呼ばれるクラスとの関係を持つエンティティを扱いDisplayNameます。

次のようなビューモデルがあるときはいつでも:

public class PersonViewModel{
  public string Nationality{get;set;}
  public string Gender {get;set;}
  public string HairColour {get;set;}   
}

そして、私たちのエンティティはそうかもしれません(これは実際の例ではありません)

public class Person {
  public Classification Classification {get;set;}
  public string Name {get;set;}
}

public class Classification {
  public Gender Gender {get;set;}
  public HumanHairColour HairColour {get;set;}
  public Nationality Nationality {get;set;}
}

内部の各プロパティクラスにClassificationは次のDisplayNameようなプロパティがあります

public class Gender {
  public string DisplayName { get; set; }
  public int Id { get; set; }
}

public class Nationality {
  public string DisplayName { get; set; }
  //...
}

public class HumanHairColour {
  public string DisplayName { get; set; }
  //...
}

現時点では、プロパティにPersonViewModel名前を付けClassificationNationalityDisplayNameたり、そのようなばかげたことをしたりしない限り、各プロパティのマッピングを手動で追加する必要があります。

ある種のルールをAutomapperセットアップに追加して、Classificationクラスに類似した名前のプロパティがあるかどうかを確認し、そのクラスを使用して文字列にマップすることは可能DisplayNameですか?

4

1 に答える 1

0

ビューモデルのプロパティの名前を次のように変更できます。

public class PersonViewModel {
  public string NationalityDisplayName { get; set; }
  public string GenderDisplayName { get; set; }
  public string HairColourDisplayName { get; set; }   
}

次に、Automapper は次のようにすべてを正しくマッピングします。

Mapper.CreateMap<Person, PersonViewModel>();
于 2012-07-03T06:46:47.307 に答える