5

基本の「ユーザー」クラスを継承して、ロール固有のタイプを作成しました。

例えば...

public class Business : User{
 public string BusinessName;
}

基本的な「UserModel」から始めて、それを継承してロール固有の機能を含めることで、View Models についても同様のことを行いました。

public class BusinessModel : UserModel{
 [Required()]
 public string BusinessName;
}

Automapper を使用して BusinessModel への変更をビジネス オブジェクトにマップし直すと、継承されたフィールドへの変更は含まれません。

//create map between model and business object
Mapper.CreateMap<BusinessModel, Business>();

//load the relevant business
var business = GetCurrentBusiness();

//map the values across
Mapper.Map<BusinessModel, Business>(model, business);

「ビジネス」自体のフィールドへの変更が存在します。ただし、 User から継承されたフィールドへの変更はそうではありません。

Automapper は継承された型をこのようにマップできないのでしょうか? または、何か不足していますか?

4

1 に答える 1

6

基本型のマップを作成してから、継承された型を含める必要があります。こちらのオートマッパーのドキュメントを参照してください

Mapper.CreateMap<UserModel, User>()
      .Include<BusinessModel, Business>();
Mapper.CreateMap<BusinessModel, Business>();
于 2013-05-27T19:31:23.387 に答える