在項目中正確使用AutoMapper

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使用說明

AutoMapper使用

.net core 3.1 WebAPi 使用 AutoMapper 9.0、10.0

在 ASP.NET Core 項目中使用 AutoMapper 進行實體映射

ASP.NET Core3.1 AutoMapper組件

相關文章
相關標籤/搜索