AutoMapper là gì? Cấu hình AutoMapper cho dự án ASP .NET Core

AutoMapper là thư viện thông dụng và hữu ích trong việc map từ một object này sang một object khác.



Github
https://github.com/AutoMapper/AutoMapper
Nuget
https://www.nuget.org/packages/AutoMapper/
Documentation
https://automapper.readthedocs.io/en/stable/

AutoMapper hỗ trợ .NET Standard nên bạn có thể sử dụng nó cho bất kỳ project C# nào mà bạn muốn. Cài đặt AutoMapper Package thông qua
Package Manager Console
Install-Package AutoMapper
Hoặc CLI
dotnet add package AutoMapper

Tham khảo đoạn code đơn giản sau

Trên là ví dụ đơn giản sử dụng AutoMapper một cách chung nhất. Với các dự án thực tế thì chúng ta sử dụng DI để inject khởi tạo và sử dụng IMapper

Hướng dẫn cấu hình AutoMapper cho dự án ASP .NET Core


B1 : Khởi tạo project và cài đặt các packages cần thiết

Khởi tạo một dự án ASP .NET Core với template MVC
dotnet new mvc -o AutoMapperTest

Cài đặt AutoMapper Package thông qua
Package Manager Console
Install-Package AutoMapper
Hoặc CLI
dotnet add package AutoMapper

Cài đặt AutoMapper Dependency Injection Package cho project thông qua
Package Manager Console
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
Hoặc CLI
dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection

B2 Cấu hình các object type cho toàn dự án

Tạo một file MappingProfile.cs để cấu hình toàn bộ việc mapping sử dụng AutoMapper cho toàn dự án


B3 Cấu hình Dependency Injection cho AutoMapper

Việc cấu hình phần này được thực hiện trong file Startup.cs


B4 Sử dụng

Sử dụng AutoMapper trên toàn project của bạn thông qua IMapper. Tham khảo ví dụ dưới cách sử dụng trong Controller


Tham khảo chi tiết và lấy code mẫu ở đây

Sau khi lấy code về các bạn chạy project với lệnh
dotnet run
Xem kết quả ở địa chỉ sau
http://localhost:5000/user

Trên đây chỉ là ví dụ hết sức đơn giản để làm quen với AutoMapper. Trên thực tế sẽ phức tạp hơn, các bạn vui lòng tham khảo thêm tài liệu trên trang chủ của AutoMapper

Một số thư viện có chức năng tương tự bạn có thể tham khảo
Mapster
AgileMapper
ExpressMapper


Tiếp tục cập nhật ...