0

这是示例类

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 中没有,但名称有点不同。那么在那种情况下如何映射?

另一种情况是 Sex & PostCode 彼此不存在相同的方式?所以请指导我如何进行逐个字段映射?

谢谢

4

1 回答 1

3

要映射字段名称不同的地方,需要显式定义映射。不在目标模型中的字段将被忽略(在这种情况下为性别)。如果目标中存在源中不存在的字段,则可以使用默认值(在这种情况下为邮政编码):

  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);
于 2013-09-25T19:51:07.847 回答