Dapper là một thư viện Object-Relational Mapping (ORM) nhẹ, nguồn mở cho . NET đơn giản hóa việc truy cập dữ liệu, giúp nó nhanh và hiệu quả hơn. Khác với Entity Framework, đây là một ORM toàn diện, Dapper hoạt động như một ORM nhỏ, cung cấp các khả năng truy vấn trực tiếp SQL với sự trừu tượng tối thiểu. Cách tiếp cận này khiến nó trở thành một lựa chọn tuyệt vời cho những nhà phát triển tìm kiếm hiệu suất cao mà ít hơn.
1. Đặc điểm chính của Dapper
- Hiệu suất: Dapper được biết đến với tốc độ của nó. Nó thực hiện các câu hỏi SQL trực tiếp, mà không có sự theo dõi thay đổi rộng rãi và bản đồ phức tạp, biến nó trở thành một trong những ORM nhanh nhất có sẵn trong .NET.
- API Đơn giản và Linh hoạt: Dapper cung cấp một API thẳng để truy vấn cơ sở dữ liệu và kết quả đối đồ đối tượng C#. Các phương pháp phổ biến bao gồm `Query`, `QueryFirst`, `QuerySingle` và `Execute`.
- Thiết lập tối thiểu: Không giống như các ORM phức tạp hơn, Dapper yêu cầu thiết lập tối thiểu. Nó phụ thuộc vào SQL để truy vấn, vì vậy không cần phải tập tin cấu hình phức tạp hay định nghĩa bản đồ thực thể.
- Tương thích với SQL: Vì Dapper sử dụng SQL thô, nó hoạt động liền mạch với tất cả các cơ sở dữ liệu tương thích SQL và cho phép toàn quyền kiểm soát các thắc mắc, tham gia và giao dịch.
2. Sử dụng Dapper trong .NET
Để sử dụng Dapper, Tao cài đặt gói Dapper ở Nuget package
Install-Package Dapper
- 𝑸𝒖𝒆𝒓𝒚𝒊𝒏𝒈 𝑫𝒂𝒕𝒂:
var products = connection.Query<Product>("SELECT * FROM Products").ToList();
- 𝑰𝒏𝒔𝒆𝒓𝒕𝒊𝒏𝒈 𝑫𝒂𝒕𝒂:
var sql = "INSERT INTO Products (Name, Price) VALUES (@Name, @Price)";
var rowsAffected = connection.Execute(sql, new { Name = "New Product", Price = 29.99 });
- 𝑼𝒑𝒅𝒂𝒕𝒊𝒏𝒈 𝑫𝒂𝒕𝒂:
var sql = "UPDATE Products SET Price = @Price WHERE Id = @Id";
var rowsAffected = connection.Execute(sql, new { Id = 1, Price = 19.99 });
- 𝑫𝒆𝒍𝒆𝒕𝒊𝒏𝒈 𝑫𝒂𝒕𝒂:
var sql = "DELETE FROM Products WHERE Id = @Id";
var rowsAffected = connection.Execute(sql, new { Id = 1 });
3.Các tính năng nâng cao của Dapper
- Stored Procedure:
Dapper có thể dễ dàng xử lý các thủ tục lưu trữ bằng cách thiết lập tham sốcommandType
thànhCommandType.StoredProcedure
. - Multi-Mapping:
Dapper hỗ trợ ánh xạ đối tượng phức tạp, bao gồm các join bảng, cho phép bạn ánh xạ kết quả của join trực tiếp đến nhiều đối tượng khác nhau. - Bulk Insert/Update:
Phương thứcExecute
của Dapper có thể xử lý chèn hoặc cập nhật hàng loạt bằng cách truyền một tập hợp tham số.
4. Lợi ích và hạn chế của Dapper
Lợi ích:
- Hiệu suất cao với chi phí tối thiểu.
- Kiểm soát toàn bộ câu lệnh SQL, cho phép nhà phát triển tối ưu hóa.
- Dễ dàng tích hợp với các thư viện hoặc ORM khác.
Hạn chế:
- Yêu cầu kiến thức SQL cao hơn và ánh xạ thủ công.
- Khả năng xác thực và theo dõi thay đổi tích hợp bị hạn chế so với Entity Framework.
5. Khi nào nên sửa dụng Dapper
Dapper là lựa chọn lý tưởng cho các ứng dụng yêu cầu hiệu suất cao và cần kiểm soát trực tiếp các câu lệnh SQL. Nó hữu ích cho các microservices, ứng dụng nhẹ hoặc các trường hợp không cần theo dõi thay đổi phức tạp. Nếu bạn quen thuộc với SQL và muốn có một lớp truy cập dữ liệu hiệu quả, hiệu suất cao trong .NET, thì Dapper là một lựa chọn xuất sắc.
Tham khảo: Learn Dapper