.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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章