EF Core - Giới thiệu

Entity Framework Core là phiên bản mới của Entity Framework sau EF 6.x. Nó là mã nguồn mở, nhẹ, có thể mở rộng và là phiên bản đa nền tảng của công nghệ truy cập dữ liệu Entity Framework.

 

Entity Framework là một framework Object/Relational Mapping (O/RM - ánh xạ quan hệ/đối tượng). Đây là một cải tiến của ADO.NET, cung cấp cho các nhà phát triển một cơ chế tự động để truy cập và lưu trữ dữ liệu trong cơ sở dữ liệu.

EF Core được dự định sẽ sử dụng với các ứng dụng .NET Core. Tuy nhiên, nó cũng có thể được sử dụng với các ứng dụng dựa trên .NET Framework 4.5+ tiêu chuẩn.

Hình dưới đây minh họa các loại ứng dụng được hỗ trợ, .NET Framework và HĐH.

Entity Framework Core

Lịch sử phiên bản Entity Framework Core

Phiên bản EF Core Ngày phát hành
Entity Framework Core 5.0 Tháng 11 - 2020 (dự kiến)
Entity Framework Core 3.1 Tháng 12 - 2019
Entity Framework Core 3.0 Tháng 9 - 2019
Entity Framework Core 2.2 Tháng 12 - 2018
Entity Framework Core 2.1 Tháng 5 - 2018
Entity Framework Core 2.0 Tháng 8 - 2017
Entity Framework Core 1.1 Tháng 11 - 2016
Entity Framework Core 1.0 Tháng 6 - 2016

Mã nguồn Entity Framework Core trên GitHub: https://github.com/aspnet/EntityFrameworkCore

Lộ trình phát triển Entity Framework Core: docs.microsoft.com/en-us/ef/core/what-is-new/roadmap

Theo dõi các vấn đề của Entity Framework Core tại: https://github.com/aspnet/EntityFrameworkCore/issues

Tài liệu chính thức của Entity Framework Core: https://docs.microsoft.com/ef/core

Cách tiếp cận phát triển của EF Core

EF Core hỗ trợ hai cách tiếp cận phát triển: Code First và Database First. EF Core chủ yếu nhắm vào cách tiếp cận Code First và cung cấp ít hỗ trợ cho cách tiếp cận Database First vì trình thiết kế trực quan hoặc trình hướng dẫn cho mô hình DB không được hỗ trợ kể từ EF Core 2.0.

Theo cách tiếp cận Code First, EF Core API tạo cơ sở dữ liệu và các bảng bằng cách sử dụng chuyển đổi (migration) dựa trên các quy ước và cấu hình được cung cấp trong các lớp thực thể của bạn. Cách tiếp cận này rất hữu ích trong thiết kế hướng miền (Domain Driven Design - DDD).

Theo cách tiếp cận Database First, EF Core API tạo các lớp thực thể và Context dựa trên cơ sở dữ liệu hiện có của bạn bằng cách sử dụng các lệnh của EF Core. Điều này được hỗ trợ hạn chế trong EF Core vì nó không hỗ trợ trình thiết kế trực quan hoặc trình hướng dẫn.

Cách tiếp cận phát triển của EF Core

EF Core với EF 6

Entity Framework Core là phiên bản mới và cải tiến của Entity Framework cho các ứng dụng .NET Core. EF Core là phiên bản mới hoàn toàn, vì vậy nó vẫn chưa đầy đủ như EF 6.

EF Core tiếp tục hỗ trợ các tính năng và khái niệm giống như EF 6 như sau:

  1. DbContext và Dbset.
  2. Mô hình dữ liệu.
  3. Truy vấn bằng cách sử dụng Linq-to-Entities.
  4. Theo dõi thay đổi.
  5. SaveChanges.
  6. Chuyển đổi (Migration).

EF Core dần dần sẽ có hầu hết các tính năng của EF 6. Tuy nhiên, có một số tính năng của EF 6 không được hỗ trợ trong EF Core 2.0, chẳng hạn như:

  1. EDMX/Graphical Visualization của mô hình.
  2. Trình hướng dẫn mô hình dữ liệu thực thể (cho phương pháp Database First).
  3. ObjectContext API.
  4. Truy vấn bằng cách sử dụng Entity SQL.
  5. Chuyển đổi tự động.
  6. Kế thừa: Bảng trên mỗi kiểu (TPT)
  7. Kế thừa: Bảng trên mỗi lớp con (TPC)
  8. Mối quan hệ nhiều-nhiều.
  9. Chia tách thực thể.
  10. Kiểu dữ liệu không gian.
  11. Ánh xạ stored procedure với DbContext cho hoạt động CUD (Create, Update, Delete).
  12. Seed data.

EF Core có các tính năng mới sau đây không được hỗ trợ trong EF 6.x:

  1. Cấu hình mối quan hệ dễ dàng
  2. Các thao tác INSERT, UPDATE và DELETE hàng loạt.
  3. Trình cung cấp trong bộ nhớ để thử nghiệm.
  4. Hỗ trợ cho IoC (Đảo ngược sự phụ thuộc).
  5. Ràng buộc duy nhất (unique contraints).
  6. Thuộc tính ẩn (shadow property).
  7. Khóa thay thế.
  8. Bộ lọc truy vấn toàn cục.
  9. Ánh xạ trường.
  10. DbContext chung
  11. Các mẫu tốt hơn để xử lý các biểu đồ thực thể bị ngắt kết nối

Tìm hiểu thêm về sự khác biệt của EF Core và EF 6 tại đây.

Trình cung cấp cơ sở dữ liệu của EF Core

Entity Framework Core sử dụng mô hình trình cung cấp để truy cập nhiều loại cơ sở dữ liệu khác nhau. EF Core có các trình cung cấp dưới dạng các gói NuGet mà bạn cần cài đặt.

Bảng sau liệt kê một số trình cung cấp cơ sở dữ liệu và các gói NuGet cho EF Core.