Công nghệ - 08/04/2025 07:07:00
Trong hệ sinh thái .NET, những cải tiến trong core framework nói chung và Entity Framework cực kỳ quan trọng đối với developers chúng ta.
Trong bài viết này, tôi xin giới thiệu về tính năng Batch Update trong Entity Framework Core 8 (EF Core 8) – một cải tiến quan trọng giúp tối ưu hóa hiệu suất khi xử lý dữ liệu lớn. Đồng thời, so sánh Batch Update của EF Core 8 với các thư viện phổ biến như Dapper và EFCore.BulkExtensions (về cách sử dụng, hiệu suất, v.v.), để chúng ta có nhiều góc nhìn khi lựa chọn công nghệ cho sản phẩm, dự án của mình.
Batch Update trong EF Core 8 được thể hiện qua các phương thức ExecuteUpdate và ExecuteDelete, lần đầu xuất hiện ở EF Core 7 và được cải tiến trong EF Core 8.
Đây là các methods cho phép thực hiện cập nhật hoặc xóa hàng loạt trực tiếp trên cơ sở dữ liệu mà không cần tải dữ liệu vào bộ nhớ (in-memory), giảm thiểu round-trip và tối ưu tài nguyên sử dụng.
VD sử dụng (trong C#):
Và câu SQL được sinh ra
Method này chỉ cần một câu lệnh SQL duy nhất, thay vì tải từng bản ghi, chỉnh sửa, rồi lưu lại như cách truyền thống.
Ngoài EF Core, 2 libraries được sử dụng nhiều trong .net để thao tác với database là Dapper và EFCore.BulkExtensions. Sơ qua 2 thư viện này, trong trường hợp các bạn chưa dùng.
Và dưới đây là so sánh chi tiết giữa Batch Update trong EF Core 8 với Dapper và EFCore.BulkExtensions, tập trung vào cách sử dụng, hiệu suất, và tính ứng dụng.
Cách sử dụng EF Core 8:

Cách sử dụng Dapper:

Đánh giá Hiệu suất:
Với 10,000 bản ghi:
Dapper nhanh hơn khoảng 10-20% do không có overhead từ LINQ hay change tracking. Tuy nhiên, với số lượng bản ghi lớn (100,000+), sự khác biệt này không đáng kể vì thời gian chủ yếu nằm ở cơ sở dữ liệu.
Ưu điểm Dapper:
Ưu điểm EF Core 8:
Kịch bản sử dụng:
Cách sử dụng EF Core 8:

Cách sử dụng EFCore.BulkExtensions:

Đánh giá hiệu suất:
Với 10,000 bản ghi:
EFCore.BulkExtensions nhanh hơn ~20-30% nếu dữ liệu đã có trong bộ nhớ, nhờ cơ chế bulk copy (như SqlBulkCopy trên SQL Server). Nhưng nếu tính cả thời gian tải dữ liệu (ToList()), tổng thời gian có thể tương đương hoặc chậm hơn EF Core 8.
Với 100,000 bản ghi:
Ưu điểm EFCore.BulkExtensions:
- Linh hoạt: hỗ trợ BulkInsert, BulkDelete, BulkMerge.
- Tùy chỉnh cao (chọn cột cập nhật, batch size).
Ưu điểm EF Core 8:
Kịch bản sử dụng:

Ưu điểm:
Hạn chế:
Kịch bản:
So với EF Core 6 trở về trước
Cách hoạt động cũ: Trước EF Core 7, để cập nhật hàng loạt, bạn phải:
So với EF Core 7
Giới thiệu ExecuteUpdate: EF Core 7 lần đầu mang đến ExecuteUpdate và ExecuteDelete, đánh dấu bước ngoặt trong xử lý batch.
Cải tiến trong EF Core 8
Batch Update trong EF Core 8 là một bước tiến lớn so với các phiên bản cũ (EF6, EF7), mang lại hiệu suất vượt trội.
So với Dapper, nó thua về tốc độ tuyệt đối nhưng thắng về bảo trì và tích hợp. So với EFCore.BulkExtensions, nó tiết kiệm RAM và đơn giản hơn, nhưng kém linh hoạt trong các kịch bản phức tạp.
Ở phía tôi, tôi vẫn khuyên dùng EF Core 8 cho các tác vụ batch cơ bản trong dự án đã dùng EF, kết hợp Dapper hoặc EFCore.BulkExtensions khi cần tối ưu hóa chuyên sâu.
Happy coding!
/Son Do
#EntityFrameworkCore8 #Dappe #DotNet #Programming #DotNetPerformance #SQLBestPractices #CodingTips #TechTutorial #SoftwareDevelopment
#wecommit100xshare #1percenterbetter
Công nghệ - 19/08/2025 21:13:07
Tìm hiểu cách xây dựng hệ thống phát hiện ngôn ngữ ký hiệu theo thời gian thực bằng AI, sử dụng DETR để tăng cường khả năng tiếp cận và đổi mới. Kết nối lời nói và cử chỉ.
Công nghệ - 18/08/2025 13:38:25
Tối ưu hóa các hệ thống RAG bằng cách tận dụng siêu dữ liệu để truy xuất thông tin chính xác và nhanh chóng hơn, giải quyết các thách thức về dữ liệu dư thừa hoặc lỗi thời với công cụ LangExtract nguồn mở. Khám phá cách LangExtract sử dụng các mô hình ngôn ngữ tiên tiến để trích xuất và cấu trúc siêu dữ liệu, tạo ra một quy trình truy xuất hợp lý và hiệu quả.
Công nghệ - 01/08/2025 07:00:00
Gỡ lỗi LLM rất quan trọng vì quy trình làm việc của chúng phức tạp và liên quan đến nhiều phần như chuỗi, lời nhắc, API, công cụ, trình truy xuất, v.v.
Công nghệ - 19/06/2025 03:05:09
Code xong chạy được là chưa đủ – phải biết khi nào nó "chết" nữa chứ 😅
Bạn đang triển khai ứng dụng trên Kubernetes, Docker hay môi trường production nào? Và bạn từng "toát mồ hôi" vì service chết mà không ai báo?
Công nghệ - 16/07/2025 13:41:17
Công nghệ - 27/06/2025 03:15:44
Công nghệ - 11/12/2025 15:05:29
[Góc chuyện nghề] bán account game để đi học nghệ - bạn dám không?
Làm nghề 20 năm, gặp nhiều sinh viên, nhưng chiều qua tôi khá bất ngờ với một cậu em tên Quang. Em Quang muốn theo nghề BA và mong muốn lương 20 triệu sau khi làm việc 1.5 năm tới 2 năm trong nghề.
Công nghệ - 22/09/2025 08:59:20
Dừng ngay việc dùng DateTime.Now trong APIs, đó là ổ lỗi tiềm ẩn trong hệ thống của bạn
⏱️ Tôi từng nghĩ DateTime.Now là một thứ vô hại, đơn giản và tiện lợi, cho đến khi gặp những vấn đề về múi giờ. Những lỗi "tưởng chừng nhỏ" này lại chính là nguồn cơn của sự thất vọng và tốn kém thời gian cho nhiều đội ngũ phát triển.
Công nghệ - 14/03/2025 04:30:32