第一步:导入automapper
确定使用位置,通过NuGet包导入AutoMapper.
第二步:使用AutoMapper
添加一个类文件,继承Profile.创建无参构造,配置关系;
例:
//class1转换成DTO类,Class1为model类,Class1DTO为DTO类,type为Type类,class1中存在TypeCode与Type表关联
CreateMap<Class1, Class1DTO>()
.ForMember(s => s.TypeName, sp => sp.MapFrom(src => src.Type.TypeName));
//class1DTO转换为model类
CreateMap<Class1DTO, Class1>()
第三步:修改ToDTO方法,ToModel方法
//ToModel方法修改
var Class1Info = Mapper.Map<DTOClass1, Class1>(dtoClass1Info);
//ToDTO方法修改
var class1DtoInfo = Mapper.Map<Class1, Class1DTO>(class1Info);
第四步:在运行程序全局应用文件Global.asax.cs中添加配置
Mapper.Initialize(a => a.AddProfile(typeof (BLLMapper))); BllMapper为第二步添加的类文件名
注:当表中存在导航属性,即包含其他表数据,并在类中声明了属性时,需在配置中配置
例:
//导航属性
class Class1
public string TypeCode{get;set;}
public Type Type{get;set;}
class Type
public string TypeCode{get;set;}
pulic string TypeName {get;set;}
//关系配置
CreateMap<Class1, Class1DTO>()
.ForMember(s => s.TypeName, sp => sp.MapFrom(src => src.Type.TypeName));
@@重点: ProjectTo的使用:
//获取Class1所有数据
var classData= Class1DAL.getData();
//通过projectTo直接集合之间对象类型转换;但只有是简单关系才可使用,即没有导航属性,或者指明了导航属性(如上例)
var class1Dto = classData.ProjectTo<Class1DTO>().ToList();