标签:报错 类型 ber create style 基础上 assert class 目标
public class Student() { public long StudentId{get;set;} public string StudentName{get;set;} } public class StudentDto() { public long StudentId{get;set;} public string StudentName{get;set;} }
如果一个类中存在包含关系,另一个类要自动映射两个类时,映射类属性命名要在被包含类属性名的基础上加上被包含类的类名
public class Student() { public long StudentId{get;set;} public string StudentName{get;set;} public Class class{get;set;} } public class Class() { public long Id{get;set;} public string Name{get;set;} } public class StudentDto() { public long StudentId{get;set;} public string StudentName{get;set;} public long ClassId{get;set;} public string ClassName{get;set;} }
注册一个映射关系
Mapper.Initialize(d=>d.CreateMap<源类型,目标类型>());
Mapper.Initalize(d=>d.CreateMap<源类型,目标类型>().ReverseMap()); var dto = Mapper.Map<StudentDto>(models); dto.StudentName = "张三";//把目标类型值改变 Mapper.Map(dto,models);//反向映射
Mapper.Configuration.AssertConfigurationlsValid();
当我们的属性不能全部映射,但又不想报错时,可以使用Ignore方法来忽略掉 无法映射 or 不需要映射 的属性
Mapper.Initalize(d=>d.CreateMap<源类型,目标类型>().forMember(d=>d.Name,s=>s.Ignore())); //忽略Name属性
我们也可以在createmap时指定要验证的成员列表
Mapper.Initalize(d=>d.CreateMap<源类型,目标类型>(MemberList.StudentDTO));//只验证StudentDTO类的属性 //如果两个类都不需要检查,加上MemberList.None即可
automapper配置了两个类型的映射后,这两个类型的集合或数组都可以直接映射,无需再次配置
Mapper.Initalize(d=>d.CreateMap<源类型,目标类型>()); var dto = Mapper.Map<List<目标类型>>(List<源类型>);
automapper还可以映射子类,但是需要配置
Mapper.Initalize(d=>{ d.CreateMap<源类型,目标类型>().Include<源子类型,目标子类型>(); d.CreateMap<源子类型,目标子类型>(); }); 源类型 model = new []{ new 源类型(); new 源子类型(); } 目标类型 DTO = Mapper.Map<目标类型[]>(model); //源类型会被映射为目标类型 //源子类型会被映射为目标子类型
第一行是配置子类和父类的关系,第二行是配置子类之间的映射
标签:报错 类型 ber create style 基础上 assert class 目标
原文地址:https://www.cnblogs.com/nicopoiduang/p/8886321.html