Automapper继承源和目标

本文关键字:目标 继承 Automapper | 更新日期: 2023-09-27 18:15:30

我继承了基本的"User"类来创建角色特定的类型。

如…

public class Business : User{
 public string BusinessName;
}

我已经为我的视图模型做了类似的事情,从一个基本的"UserModel"开始,并继承它以包含角色特定的功能。

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

当我使用Automapper将对我的BusinessModel的更改映射回我的Business对象时,它不包括对继承字段的任何更改。

//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);

对"Business"本身的任何字段的更改都存在。但是,对从User继承的字段的任何更改都不会。

Automapper只是不能像这样映射继承类型吗?还是我错过了什么?

Automapper继承源和目标

您需要为基类型创建映射,然后包含继承类型。查看此处的automapper文档。

Mapper.CreateMap<UserModel, User>()
      .Include<BusinessModel, Business>();
Mapper.CreateMap<BusinessModel, Business>();