.netcore3.1——应用AutoMapper

多层架构中存在多种模型,如视图模型ViewModel,数据传输对你DTO,ORM对象等,这些数据在层与层之间进行传输必须涉及类型之间的转换。

AutoMapper是一个对象-对象映射器,作用是通过设置好的映射规则把一个对象转化为另一个对象,避免每次都去手动写转换代码。

AutoMapper仅是其中一种方式,现在类似的组件多的多,简单点的自己也可以写,用顺手了哪家都OK。

使用:

1、Nuget引用:

 

2、ConfigureServices中进行服务注册(程序集方式):

1 //添加AutoMapper
2             services.AddAutoMapper(typeof(StartupHelp.MapperProfiles).Assembly);

StartupHelp.MapperProfiles就是要注册的类型所在程序集

 

3、配置映射规则:

1     public class MapperProfiles : AutoMapper.Profile
2     {
3         public MapperProfiles()
4         {
5             CreateMap<Manager, ManagerModel>().ReverseMap();
6         }
7     }

这里是最简单的映射规则,还可以针对属性不匹配或者其他情况进行映射规则处理

 

4、使用:

 1     public class ManagerService : IManagerService
 2     {
 3         private readonly IManagerRepository _repository;
 4         private readonly IMapper _mapper;
 5 
 6         public ManagerService(IManagerRepository repository, IMapper mapper)
 7         {
 8             this._repository = repository;
 9             this._mapper = mapper;
10         }
11 
12         public async Task<ManagerModel> GetManagerAsync(string username)
13         {
14             var obj = await _repository.GetManager(username);
15             return _mapper.Map<ManagerModel>(obj);
16         }
17     }

这里用到了构造函数注入,_mapper.Map<ManagerModel>(obj); 一句话即可实现对象之间的转换。

 

官方Github地址:https://github.com/AutoMapper/AutoMapper

官方文档(英文):https://automapper.readthedocs.io/en/latest/Getting-started.html

 

posted @ 2020-04-17 14:12  屈鲁奇  阅读(1506)  评论(0编辑  收藏  举报