6-3.ASP.NET Core Web API 入門教學 - 使用AutoMapper更新資料

ASP.NET Core Web API 入門教學

影片講解


終究還是開始慢慢倦怠了XD,以後可能有想寫文章的內容才會寫,不然只會有影片

在撈取資料和新增資料都可以使用AutoMapper幫助我們快速並精簡程式碼,那更新是不是一樣可以呢?當然可以,接下來就要來做示範。

首先別忘了,我們開頭是有注入AutoMapper的

private readonly IMapper _mapper;
public TodoController(TodoContext todoContext, IMapper mapper)
{
    _mapper = mapper;
}

那接著我們就要做對應檔的設定,來到TodoListProfile.cs

上個影片我們一樣有創了一個更新專用的DTO,所以就要來這邊做個對應的設定。

CreateMap<TodoListPutDto, TodoList>()
    .ForMember(
    dest => dest.UpdateTime,
    opt => opt.MapFrom(src => DateTime.Now)
    )
    .ForMember(
    dest => dest.UpdateEmployeeId,
    opt => opt.MapFrom(src => Guid.Parse("00000000-0000-0000-0000-000000000001"))
    );

那我們這邊不只對應,還有另外把系統決定值得部分寫進了這裡,其中Guid是因為還沒做登入驗證,所以先寫死。

那把系統決定值的部分寫進設定檔裡的好處就是可以更分工明確,讓以下主要處理更新邏輯的程式碼更為簡潔,如下。

[HttpPut("AutoMapper/{id}")]
public void PutAutoMapper(Guid id, [FromBody] TodoListPutDto value)
{
    var update = (from a in _todoContext.TodoLists
                  where a.TodoId == id
                  select a).SingleOrDefault();
    if (update != null)
    {
        _mapper.Map(value, update);
        _todoContext.SaveChanges();
    }
}

那其中_mapper.Map(value, update)就是取代掉我們上一篇所教的人工自行對應更新的部分,以下這部分。

update.Name = value.Name;
update.Orders = value.Orders;
update.Enable = value.Enable;

這樣子,我們整體程式碼是不是變得更簡潔,而且又不用再一項一項的作對應更新了。

以上就是這篇AutoMapper的簡單示範,想看詳細操作的話可以看影片。

範例檔案:下載

新手分享學習成果,若有錯誤,煩請告知修正,感謝🙏




Copyright © 凱哥寫程式 2022 | Powered by TalllKai ❤