AutoMapper是一個輕量級的類庫,主要功能是把一個對象轉換成另一個對象,而避免咱們每次都手工去轉換。html
常見幾種使用場景:
- 對外服務接口,把邏輯層的實體轉換成服務消費者須要的字段。
- UI展示層,把業務對象轉換成UI須要展示的字段。
- 用戶的輸入輸出,把DTO與領域模型互轉。
相信你們AutoMapper能夠作什麼已經有了一個基本的瞭解,下面主要針對AutoMapper在NetCoreWeb中的使用作一個瞭解。git
前置準備
工做中必定要多複用別人造的成熟的輪子,這樣能夠加快本身的工做進度。固然個人意思也不是說只要會用,咱們也要知道其中的原理,但這應該是本身工做之餘應該學習的內容。工做講究的是效率,又快又好是檢驗工做成果的標準。github
Nuget包下載
寫本文章時的版本 automapper
爲10.0.1 AutoMapper.Extensions.Microsoft.Dependeny
爲8.1.1app
install-package automapper學習
install-package AutoMapper.Extensions.Microsoft.Dependeny測試
項目集成
一、ConfigureServices中注入服務url
services.AddAutoMapper(Assembly.Load("NetCoreWebAnalysis"));
二、定義Dto對象.net
工單code
public class Order { public int Id { get; set; } public string Name { get; set; } public string Desc { get; set; } public DateTime CreateTime { get; set; } }
工單Dtohtm
public class OrderOutPut { public int Id { get; set; } public string Name { get; set; } public string Desc { get; set; } public string CreateYear { get; set; } public string CreateMonth { get; set; } public string CreateDay { get; set; } }
三、配置映射關係
public class OrderProfile : Profile { public OrderProfile() { CreateMap<Order, OrderOutPut>() .ForMember(des => des.CreateYear, source => source.MapFrom(i => i.CreateTime.Year)) .ForMember(des => des.CreateMonth, source => source.MapFrom(i => i.CreateTime.Month)) .ForMember(des => des.CreateDay, source => source.MapFrom(i => i.CreateTime.Day)); } }
四、執行映射方法測試
[Route("mapper")] [ApiController] public class MapperController : Controller { private readonly IMapper _mapper; public MapperController(IMapper mapper) { _mapper = mapper; } [HttpGet("getmapper")] public OrderOutPut GetMapper() { var order = new Order() { Id = 1, Name = "工單1號", Desc = "工單描述內容", CreateTime = DateTime.Now }; return _mapper.Map<OrderOutPut>(order); } }
輸出內容
{ "id": 1, "name": "工單1號", "desc": "工單描述內容", "createYear": "2021", "createMonth": "5", "createDay": "12" }
參考
AutoMapper.Extensions.Microsoft.DependencyInjection使用說明
.net core 3.1 WebAPi 使用 AutoMapper 9.0、10.0