So sánh Entity Framework Core và Entity Framework 6

1. Giới thiệu về Entity Framework Core

Entity Framework Core (EF Core) là một framework ánh xạ cơ sở dữ liệu – đối tượng mới cho .NET. Nó hỗ trợ các truy vấn LINQ, theo dõi thay đổi, cập nhật và thay đổi cấu trúc. EF Core hoạt động với SQL Server/ SQL Azure, SQLite, Azure Cosmos DB, MySQL, PostgreSQL và nhiều cơ sở dữ liệu khác thông qua mô hình plugin của cơ sở dữ liệu.

2. Giới thiệu về Entity Framework 6

Entity Framework 6 (EF6) là một framework ánh xạ quan hệ đối tượng được thiết kế cho .NET Framework nhưng có hỗ trợ .NET Core. EF6 là một sản phẩm ổn định, được hỗ trợ, nhưng không còn được phát triển tích cực.

3. So sánh Entity Framework Core và Entity Framework 6

EF Core cung cấp các tính năng mới sẽ không được triển khai trong EF6. Tuy nhiên, không phải tất cả các tính năng EF6 hiện đều được triển khai trong EF Core. Các bảng sau đây so sánh các tính năng có sẵn trong EF Core và EF6. Đây là một phép so sánh cấp cao và không liệt kê mọi tính năng hoặc giải thích sự khác biệt giữa cùng một tính năng trong các phiên bản EF khác nhau.

Tạo model

Tính năngEF 6.4EF Core
Basic class mappingYes1.0
Basic class mappingYes1.0
Constructors with parameters2.1
Property value conversions2.1
Mapped types with no keys2.1
ConventionsYes1.0
Custom conventionsYes1.0 (partial)
Data annotationsYes1.0
Fluent APIYes1.0
Inheritance: Table per hierarchy (TPH)Yes1.0
Inheritance: Table per type (TPT)YesPlanned for 5.0
Inheritance: Table per concrete class (TPC)YesStretch for 5.0 (1)
Shadow state properties1.0
Alternate keys1.0
Many-to-many navigationsYesPlanned for 5.0
Many-to-many without join entityYesOn the backlog
Key generation: DatabaseYes1.0
Key generation: Client1.0
Complex/owned typesYes2.0
Spatial dataYes2.2
Model format: CodeYes1.0
Create model from database: Command lineYes1.0
Update model from databasePartialOn the backlog
Global query filters2.0
Table splittingYes
Entity splittingYesStretch for 5.0 (#620) (1)
Database scalar function mappingPoor2.0
Field mapping1.1
Nullable reference types (C# 8.0)3.0
Graphical visualization of modelYesNo support planned (2)
Graphical model editorYesNo support planned (2)
Model format: EDMX (XML)YesNo support planned (2)
Create model from database: VS wizardYesNo support planned (2)

Truy xuất dữ liệu

Tính năngEF 6.4EF Core
LINQ queriesYes1.0
Readable generated SQLPoor1.0
GroupBy translationYes2.1
Loading related data: EagerYes1.0
Loading related data: Eager loading for derived types2.1
Loading related data: LazyYes2.1
Loading related data: ExplicitYes1.1
Raw SQL queries: Entity typesYes1.0
Raw SQL queries: Keyless entity typesYes2.1
Raw SQL queries: Composing with LINQ1.0
Explicitly compiled queriesPoor2.0
await foreach (C# 8.0)3.0
Text-based query language (Entity SQL)YesNo support planned (2)

Lưu dữ liệu

Tính năngEF 6.4EF Core
Change tracking: SnapshotYes1.0
Change tracking: NotificationYes1.0
Change tracking: ProxiesYesMerged for 5.0
Accessing tracked stateYes1.0
Optimistic concurrencyYes1.0
TransactionsYes1.0
Batching of statements1.0
Stored procedure mappingYesOn the backlog
Disconnected graph low-level APIsPoor1.0
Disconnected graph End-to-end1.0

Tính năng khác

Tính năngEF 6.4EF Core
MigrationsYes1.0
Database creation/deletion APIsYes1.0
Seed dataYes2.1
Connection resiliencyYes1.1
InterceptorsYes3.0
EventsYes3.0 (partial)
Simple Logging (Database.Log)YesMerged for 5.0
DbContext pooling2.0

Các cơ sở dữ liệu được hỗ trợ

Tính năngEF 6.4EF Core
SQL ServerYes1.0
MySQLYes1.0
PostgreSQLYes1.0
OracleYes1.0
SQLiteYes1.0
SQL Server CompactYes1.0 (4)
DB2Yes1.0
FirebirdYes2.0
Jet (Microsoft Access)2.0 (4)
Azure Cosmos DB3.0
In-memory (for testing)1.0

Chú thích:
(1): Chưa có khả năng xuất hiện đối với một bản phát hành nhất định. Tuy nhiên sẽ sớm xuất hiện trong lương lai.
(2): Một số tính năng của EF6 sẽ không được triển khai trong EF Core.
(3): Cơ sở dữ liệu dành cho EF Core do bên thứ ba triển khai có thể bị trì hoãn trong việc cập nhật lên các phiên bản mới của EF Core.
(4): SQL Server Compact và Jet chỉ hoạt động trên .NET Framework (không phải trên .NET Core).

4. Nền tảng hỗ trợ

EF Core 3.1 chạy trên .NET Core và .NET Framework, thông qua việc sử dụng .NET Standard 2.0. Tuy nhiên, EF Core 5.0 sẽ không chạy trên .NET Framework. EF6.4 chạy trên .NET Core và .NET Framework, thông qua gói đa mục tiêu(multi-targeting.).

5. Kết luận

Trên đây là một số so sánh giữa EF Core và EF6. Mỗi framwork đều có ưu và nhược điểm. Trong tương lai, dần dần EF Core sẽ có đủ các tính năng của EF6 nhưng tại thời điểm hiện tại EF6 có thể sẽ hoạt động ổn định hơn. Vậy nên các bạn có thể dựa vào các so sánh và nhu cầu bản thân để lựa chọn framwork hợp lý với project của mình hiện tại và mong bài viết của mình có thể hỗ trợ các bạn một phần để đưa ra quyết định.

Tham khảo https://viblo.asia/p/so-sanh-entity-framework-core-va-entity-framework-6-aWj53bRYl6m

Viết một bình luận