Giới thiệu về Entity Framework Core

Entity Framework là Object Relational Mapper (ORM) được phát triển bởi Microsoft để đơn giản hóa công việc của các nhà phát triển .NET.

Entity Framework Core là một phần mềm mã nguồn mở nhẹ, có thể mở rộng và giống như tất cả các phiên bản trước của Entity Framework. Nó là một phần mềm đa nền tảng làm cho nó hoạt động linh hoạt trên các hệ điều hành khác nhau như Windows, Mac OS và Linux OS.

  • Entity Framework Core thực hiện thao tác tạo, đọc, cập nhật và xóa tự động mà không cần phải viết tất cả các câu lệnh SQL theo cách thủ công.
  • Entity Framework Core hoạt động trên nguyên tắc ORM cho phép nó loại bỏ nhu cầu viết tất cả các mã truy cập mà các nhà phát triển thường phải mất rất nhiều thời gian để viết.
  • Bằng cách này, tất cả các nhà phát triển có thể tập trung vào dự án đang diễn ra của họ một cách hiệu quả mà không cần lo lắng về việc viết tất cả các truy vấn .NET và SQL.

Phương pháp tiếp cận của Entity Framework Core

Hiện tại, Entity Framework Core hỗ trợ hai cách tiếp cận phát triển, cách tiếp cận Code-First và cách tiếp cận Database-First, nhưng có rất ít hỗ trợ cho cách tiếp cận Database-First.

Nhưng đối với cách tiếp cận Code-First, Entity Framework Core đã được chứng minh là hữu ích một cách hiệu quả.

Với cách tiếp cận Code-First, Entity Framework Core đầu tiên tạo các lớp cho dữ liệu đã cho và sau đó nó sử dụng các quy ước mặc định có thể thay đổi theo nhu cầu của người dùng, nó sử dụng các quy ước này để tạo cơ sở dữ liệu và bảng cơ sở dữ liệu có liên quan.

Đối với phương pháp tiếp cận Database-First, Entity Framework Core tạo các lớp cần thiết bằng cách sử dụng cơ sở dữ liệu có sẵn hoặc các bảng cơ sở dữ liệu, nó tạo các lớp này bằng cách sử dụng các lệnh Entity Framework Core.

Tuy nhiên, hạn chế của phương pháp tiếp cận Database-First là phương pháp này chỉ có thể được áp dụng cho một số lớp giới hạn vì Entity Framework Core không hỗ trợ trình thiết kế trực quan hoặc trình hướng dẫn.

Các tính năng của Entity Framework Core

Nếu bạn đã quen thuộc với Entity Framework 6, thì Entity Framework Core bao gồm tất cả các tính năng từ Entity Framework 6. Một số tính năng cơ bản được bao gồm trong Entity Framework Core là:

  • DbContext & DbSet
  • Mô hình dữ liệu
  • Truy vấn bằng Linq-to-Entities
  • Change Tracking
  • SaveChanges
  • Migration
  • Cấu hình mối quan hệ dễ dàng
  • Các thao tác CHÈN, CẬP NHẬT và XÓA hàng loạt
  • Trình cung cấp In-memory để thử nghiệm
  • Hỗ trợ IoC (Inversion of Control)
  • Ràng buộc duy nhất (Unique constraints)
  • Shadow properties
  • Alternate keys
  • Bộ lọc truy vấn chung (Global query filter)
  • Field mapping
  • DbContext pooling
  • Các mẫu thiết kế tốt hơn để xử lý các thực thể bị ngắt kết nối.

Bên cạnh các tính năng này, Entity Framework Core gần đây đã được cập nhật để hỗ trợ các tính năng sau.

Đại tu LINQ

LINQ cho phép các nhà phát triển viết không giới hạn các truy vấn .NET khác nhau mà họ lựa chọn. Nó giúp có thông tin kiểu dữ liệu phong phú cung cấp kiểm tra kiểu dữ liệu lúc biên dịch và IntelliSense, nhưng thách thức thực sự là xử lý các kết hợp này cho các nhà cung cấp LINQ.

  • Entity Framework Core 3.0 và mới hơn cho phép các nhà cung cấp LINQ dịch nhiều truy vấn hơn sang SQL, cung cấp cho người dùng các truy vấn hiệu quả hơn trong SQL.
  • Nó cũng cho phép các nhà phát triển tạo một câu lệnh SQL duy nhất cho mỗi truy vấn LINQ. Do đó nó có thể có những cải tiến hơn nữa sẽ mang lại nhiều nâng cấp hiệu suất hơn trong tương lai.

Hỗ trợ cơ sở dữ liệu Cosmos DB

Đối với các nhà phát triển đã quen thuộc với Entity Framework, hỗ trợ Cosmos DB cho phép họ sử dụng Azure Cosmos DB làm cơ sở dữ liệu cho ứng dụng.

Điều này cho phép các nhà phát triển .NET có quyền truy cập vào các tính năng như phân phối toàn cầu, tính khả dụng luôn sẵn sàng, khả năng mở rộng đàn hồi và độ trễ thấp.

Lazy Loading

Tải chậm (Lazy Loading) cho phép Entity Framework Core lấy dữ liệu cần thiết mà không cần viết thêm các truy vấn.

  • Để áp dụng điều này, nó sử dụng proxy nhưng vì logic proxy không phải là tính năng cốt lõi của Entity Framework Core, nó giữ dữ liệu trong gói riêng của dự án.
  • Với tính năng tải chậm được bật trên context, bất kỳ thuộc tính điều hướng ảo nào cũng bị proxy ghi đè dưới vỏ bọc tại thời điểm thực thi, nhà phát triển phải thay đổi khai báo thành virtual theo cách thủ công.

Kỹ thuật đảo ngược view của cơ sở dữ liệu

Những loại truy vấn đại diện cho dữ liệu có thể đọc được từ cơ sở dữ liệu, nhưng chúng không thể thay đổi hoặc cập nhật. Những truy vấn này đã được đổi tên thành các kiểu thực thể không có khóa (key-less).

Giờ đây, Entity Framework Core tự động tạo các kiểu thực thể không có khóa khi thiết kế ngược các view của cơ sở dữ liệu.

Entity Framework Core liên tục nhận được các bản cập nhật chương trình mới và tốt hơn, bổ sung nhiều tính năng hữu ích hơn cho các nhà phát triển, một số tính năng sắp tới cho tương lai là:

  • Khả năng bỏ qua các phần của mô hình trong quá trình di chuyển (migration).
  • Các thực thể túi thuộc tính được theo dõi như hai vấn đề riêng biệt.

Ví dụ về Entity Framework Core

Trong một tình huống điển hình để đọc, ghi, cập nhật và xóa khỏi bảng cơ sở dữ liệu, các nhà phát triển phải viết mã khác nhau để tạo ra các câu lệnh SQL.

Khi dữ liệu được đọc từ cơ sở dữ liệu, để ánh xạ dữ liệu đến các lớp có liên quan, các nhà phát triển phải tạo một mã tùy chỉnh khác để ánh xạ dữ liệu đến các lớp tương ứng của họ.

Tất cả các hành động này phải được thực hiện cho từng dự án riêng lẻ, làm cho nó phức tạp và tốn thời gian cho các nhà phát triển.

Với sự trợ giúp của ORM như Entity Framework Core, tất cả các tác vụ này có thể được thực hiện tự động làm cho nó trở nên đơn giản và tiết kiệm thời gian cho tất cả các Nhà phát triển .NET.

Entity Framework Core nằm giữa mã ứng dụng và cơ sở dữ liệu và nó loại bỏ nhu cầu về mã truy cập dữ liệu tùy chỉnh thường phải được viết khi không có các giải pháp ORM thích hợp.

Ví dụ: Trong trường hợp chúng ta phải phát triển một ứng dụng để quản lý nhân viên trong một công ty, chúng ta sẽ có các lớp khác nhau như nhân viên, phòng ban, chức vụ,… Các lớp này sẽ được gọi là lớp miền.

Để sắp xếp tất cả các lớp này theo một thứ tự có hệ thống và có cấu trúc, bất kỳ nhà phát triển nào cũng phải đầu tư rất nhiều thời gian và công sức để tạo ra các mã phù hợp cho tình huống.

Trong trường hợp này, một ORM như Entity Framework Core thực sự tiện dụng vì nó thực hiện tất cả công việc một cách tự động, dẫn đến tiết kiệm nhiều tài nguyên.

Phần kết luận

Entity Framework Core là phần mềm rất hữu ích nằm giữa các lớp khác nhau và cơ sở dữ liệu hoặc bảng cơ sở dữ liệu để tự động cấu hình các câu lệnh SQL cần thiết để tái cấu trúc và quản lý các cơ sở dữ liệu nhất định.

Nó đơn giản hóa công việc của các nhà phát triển bằng cách tự làm việc với dữ liệu, cho phép người dùng thực hiện công việc của họ một cách hiệu quả hơn.

Vì nó là một phần mềm đa nền tảng, nên bất kỳ nhà phát triển .NET nào cũng có thể có những lợi ích của Entity Framework Core.

Với sự phát triển đang diễn ra đối với Entity Framework Core, các nhà phát triển có thể mong đợi các tính năng hữu ích và tuyệt vời sẽ xuất hiện trên các bản phát hành phần sụn trong tương lai.

Entity Framework Core
Bài Viết Liên Quan:
ConnectionString cho Entity Framework Core từ A-Z
Trung Nguyen 15/10/2021
ConnectionString cho Entity Framework Core từ A-Z

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách thiết lập các chuỗi kết nối cho SQL Server, Azure SQL, SQLite, PostgreSQL, MySQL và MariaDB.

Cấu hình trong Entity Framework Core
Trung Nguyen 03/04/2021
Cấu hình trong Entity Framework Core

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cấu hình sử dụng attribute, Fluent API để ghi đè các quy ước mặc đình trong Entity Framework Core.

Các quy ước trong Entity Framework Core
Trung Nguyen 03/04/2021
Các quy ước trong Entity Framework Core

Bạn sẽ tìm hiểu các quy ước được tính hợp sẵn trong Entity Framework Core để tạo khóa chính, khóa ngoại, bảng, lược đồ, cột, kiểu dữ liệu, index ...

Quản lý mối quan hệ Một - Nhiều trong Entity Framework Core
Trung Nguyen 03/04/2021
Quản lý mối quan hệ Một - Nhiều trong Entity Framework Core

Trong hướng dẫn này, bạn sẽ tìm hiểu cách tạo, sửa đổi và xóa mối quan hệ một - nhiều trong Entity Framework Core.