专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

AutoMapper使用

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:49:55       共计:3643 浏览

AutoMapper作用


   AutoMapper的作用是把一个对象转化为另一个对象,避免每次都去转化。

   使用DTO实现表现层与领域Model的解耦,用AutoMapper来实现DTO与领域Model的相互转换


什么是DTO?


DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已。

为什么要用DTO?


   DTO更注重数据,对领域对象进行合理封装,从而不会将领域对象的行为过分暴露给表现层

   DTO是面向UI的需求而设计的,而领域模型是面向业务而设计的。因此DTO更适合于和表现层的交互,通过DTO我们实现了表现层与领域Model之间的解耦,因此改动领域Model不会影响UI层

   DTO说白了就是数据而已,不包含任何的业务逻辑,属于瘦身型的对象,使用时可以根据不同的UI需求进行灵活的运用

   先创建类,在类中实现映射的方法


使用场景


   对外服务接口

   UI展现层

   用户的输入输出


public class Test1 : Profile

{

   public Test1()

   {

       //两个类型之间的映射

       CreateMap<classA, classB>().ReverseMap();

       CreateMap<classC, classD>().ReverseMap();

       

       //映射的对象名称不一样

       CreateMap<AddressDto, Address>().ForMember(d => d.Country, opt => opt.MapFrom(s => s.CountryName));

       //或者

       CreateMap<AddressDto, Address>().ConstructUsing(cp => new Address

       {

           CountryName=cp.Country

       }).ReverseMap();

   }

}


public class Test2 : Profile

{

   public Test2()

   {

       CreateMap<classA1, classB1>().ReverseMap();

       CreateMap<classC1, classD1>().ReverseMap();

   }

}


在需要的地方进行映射就OK了

classA1 info;


Mapper.Map<classB1>(info);


然后创建一个公共类放入所有的需要初始化映射的类

public static class AutoMapperConfig

{

   public static void Configure()

   {

       //进行初始化映射

       Mapper.Initialize(cfg =>

       {

           cfg.AddProfile<Profiles.Test1>();

           cfg.AddProfile<Profiles.Test2>();

       }

   }

}


一般可以在程序的启动项中初始化映射,将所有的创建映射的方法写在一个类中

protected void Application_Start()

{

   //在程序启动时调用AutoMapperConfig类

   AutoMapperConfig.Configure();

}


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:AutoMapper在asp.netcore中的使用 | ·下一条:【C#】AutoMapper 使用手册

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有