Tìm hiểu về AutoMapper trong ASP.NET Core 5.0
Đăng lúc: 10:34 AM - 29/12/2022 bởi Charles Chung - 1486Trong bài viết này tôi sẽ giải thích về AutoMapper và hướng dẫn các bạn sử dụng AutoMapper trong ASP.NET Core
1. AutoMapper là gì?
Trong hầu hết các ứng dụng, chúng ta thường có nhu cầu map(ánh xạ) đối tượng thuộc loại này sang đối tượng thuộc loại khác. AutoMapper .NET Core là một thư viện đơn giản giúp chúng ta chuyển đổi một loại đối tượng này sang loại đối tượng khác. Nó là một trình ánh xạ object to object dựa trên một quy ước, đòi hỏi ít cấu hình.
2. Ứng dụng
AutoMapper được xây dựng để giải quyết một vấn đề phức tạp mà hầu hết các nhà phát triển gặp phải trong cuộc sống hàng ngày của họ – viết mã ánh xạ một loại đối tượng này sang loại đối tượng khác. Loại code này khá tẻ nhạt và nhàm chán để viết, vậy tại sao không để công việc đó cho công cụ nhỏ này?
Điều khiến AutoMapper trở nên thú vị là nó cung cấp một số quy ước dễ sử dụng để loại bỏ công việc khó khăn là tìm ra cách ánh xạ Kiểu A sang Kiểu B. Miễn là Kiểu B tuân theo các quy ước đã thiết lập của AutoMapper, hầu như không cần cấu hình để ánh xạ hai Kiểu.
3. Ưu điểm của AutoMapper
- Không phải viết các dòng code nhàm chán
- Xử lý mapping có điều kiện
- Xử lý đối tượng phức tạp
4. Hướng dẫn sử dụng AutoMapper trong ASP.NET Core 5.0
- Tạo project ASP.NET Core 5.0
- Cài đặt thư viện
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
- Cấu hình trong Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(typeof(Startup));
services.AddControllersWithViews();
}
- Tạo lớp Product và ProductModel
public class Product
{
public string ProductId { get; set; }
public string ProductName { get; set; }
public float Price { get; set; }
public string Description { get; set; }
public DateTime? CreateDate { get; set; }
}
public class ProductViewModel
{
public string ProductName { get; set; }
public int Price { get; set; }
public string Description { get; set; }
}
- Tạo ProductProfile để khởi tạo Map
/// <summary>
/// Lớp này sẽ được quét tự động và khởi tạo để tạo Map từ Product->ProductViewModel và ngược lại
/// </summary>
public class ProductProfile:Profile
{
public ProductProfile()
{
CreateMap<Product, ProductViewModel>().ReverseMap();
//trường hợp map các thuộc tính khác tên nhau (lưu ý phải 2 thuộc tính phải cùng kiểu)
//CreateMap<ProductViewModel, Product>()
// .ForMember(dest=>dest.ProductName,o=>o.MapFrom(src=>src.Ten))
// .ForMember(dest => dest.Price, o => o.MapFrom(src => src.Gia))
// .ReverseMap();
}
}
- Tạo Controller và sử dụng AutoMapper
public class ProductController : Controller
{
private static List<Product> listproduct = new List<Product>();
private IMapper mapper;
public ProductController(IMapper mapper)
{
this.mapper = mapper;
}
public IActionResult Index()
{
return View(listproduct);
}
//...........Xem tiếp video demo...................
}
Video demo
Link download source code (Google Drive)
thay lời cảm ơn!
Các bài cũ hơn
- Tìm hiểu kiến trúc Onion trong ASP.NET Core với CQRS (01:34 PM - 22/12/2022)
- Tìm hiểu Composite Design Pattern với ví dụ sử dụng ngôn ngữ C# (09:30 AM - 20/12/2022)
- Tìm hiểu Command and Query Responsibility Segregation (CQRS) (11:37 AM - 15/12/2022)
- Hiểu biết cơ bản về lập trình hướng đối tượng (OOP) (09:50 AM - 13/12/2022)
- Sử dụng giải thuật MD5 trong các ngôn ngữ lập trình và các hệ quản trị cơ sở dữ liệu khác nhau. (11:23 AM - 08/12/2022)