当类结构不完全相同时如何使用自动映射器

本文关键字:何使用 映射 结构 不完全 | 更新日期: 2023-09-27 18:32:44

这里是示例类

public class Person {
    public int Id{ get; set ;}
    public string FirstName{ get; set ;}
    public string LastName{ get; set ;}
    public string Email{ get; set ;}
    public string PhoneNo{ get; set ;}
    public string Sex{ get; set ;}
}
public class PersonView {
    public int Id{ get; set ;}
    public string FirstName{ get; set ;}
    public string LastName{ get; set ;}
    public string Mail{ get; set ;}
    public string Phone{ get; set ;}
    public string PostCode{ get; set ;}
}

现在请看我的两个类结构。 很少有字段是相同的,有些时间字段名称有点不同但相同例如,电子邮件和电话没有在PersonView中,但名称有点不同。那么在这种情况下如何映射?

另一种情况是性别和邮政编码以不同的方式存在? 所以指导我如何逐字段映射?

谢谢

当类结构不完全相同时如何使用自动映射器

要映射字段名称不同的位置,需要显式定义映射。不在目标模型中的字段将被忽略(在本例中为)。如果目标中存在源中不存在的字段,则可以使用默认值(在本例中为邮政编码):

  Mapper.CreateMap<Person, PersonView>()
      .ForMember(pv => pv.Mail, opt => opt.MapFrom(p => p.Email))
      .ForMember(pv => pv.Phone, opt => opt.MapFrom(p => p.PhoneNo))
      .ForMember(pv => pv.PostCode, opt => opt.UseValue("Unknown postcode"));
  var viewModel = Mapper.Map<Person,PersonView>(me);