Membandingkan EF Core & EF6

EF Core

Entity Framework Core (EF Core) adalah pemeta database objek modern untuk .NET. Ini mendukung kueri LINQ, pelacakan perubahan, pembaruan, dan migrasi skema.

EF Core bekerja dengan SQL Server/Azure SQL Database, SQLite, Azure Cosmos DB, MySQL, PostgreSQL, dan banyak lagi database melalui model plugin penyedia database.

EF6

Entity Framework 6 (EF6) adalah pemeta relasional objek yang dirancang untuk .NET Framework tetapi dengan dukungan untuk .NET Core. EF6 adalah produk yang stabil dan didukung, tetapi tidak lagi dikembangkan secara aktif.

Perbandingan fitur

EF Core menawarkan fitur baru yang tidak akan diterapkan di EF6. Namun, tidak semua fitur EF6 saat ini diterapkan di EF Core.

Tabel berikut membandingkan fitur yang tersedia di EF Core dan EF6. Ini adalah perbandingan tingkat tinggi dan tidak mencantumkan setiap fitur atau menjelaskan perbedaan antara fitur yang sama dalam versi EF yang berbeda.

Kolom EF Core menunjukkan versi produk tempat fitur pertama kali muncul.

Membuat model

Feature EF6.4 EF Core
Pemetaan kelas dasar Yes 1.0
Konstruktor dengan parameter 2.1
Konversi nilai properti 2.1
Jenis yang dipetakan tanpa kunci 2.1
Conventions Yes 1.0
Konvensi khusus Yes 7.0
Anotasi data Yes 1.0
API Fasih Yes 1.0
Warisan: Tabel untuk setiap hierarki (TPH) Yes 1.0
Pewarisan: Tabel per jenis (TPT) Yes 5.0
Warisan: Tabel per kelas konkret (TPC) Yes 7.0
Properti keadaan bayangan 1.0
Kunci alternatif 1.0
Navigasi banyak ke banyak Yes 5.0
Banyak ke banyak tanpa entitas penghubung Yes 5.0
Pembuatan kunci: Database Yes 1.0
Pembuatan kunci: Klien 1.0
Jenis kompleks/berkepemilikan Yes 2.0
Data spasial Yes 2.2
Format model: Kode Yes 1.0
Membuat model dari database: Baris perintah Yes 1.0
Memperbarui model dari database Partial Pada backlog (#831)
Filter kueri global 2.0
Pemisahan tabel Yes 2.0
Pemisahan entitas Yes 7.0
Pemetaan fungsi skalar database Buruk 2.0
Pemetaan fungsi bernilai tabel database Buruk 5.0
Pemetaan bidang 1.1
Jenis referensi nullable (C# 8.0) 3.0
Visualisasi grafis dari model Yes Tidak ada dukungan yang direncanakan (1)
Editor model grafik Yes Tidak ada dukungan yang direncanakan (1)
Model format: EDMX (XML) Yes Tidak ada dukungan yang direncanakan (1)
Buat model dari database: Wizard VS Yes Tidak ada dukungan yang direncanakan (1)

Meng-kueri data

Feature EF6.4 EF Core
Kueri LINQ Yes 1.0
SQL yang dihasilkan yang dapat dibaca Buruk 1.0
Terjemahan GroupBy Yes 2.1
Memuat data terkait: Eager Yes 1.0
Memuat data terkait: Pemanggilan data cepat untuk jenis turunan 2.1
Memuat data terkait: Malas Yes 2.1
Memuat data terkait: Eksplisit Yes 1.1
Kueri SQL mentah: Jenis entitas Yes 1.0
Kueri SQL mentah: Jenis entitas tanpa kunci Yes 2.1
Kueri SQL mentah: Menyusun dengan LINQ 1.0
Kueri yang dikompilasi secara eksplisit Buruk 2.0
await foreach (C# 8.0) 3.0
Bahasa kueri berbasis teks (Entity SQL) Yes Tidak ada dukungan yang direncanakan (1)

Menyimpan data

Feature EF6.4 EF Core
Pelacakan perubahan: Cuplikan Yes 1.0
Pelacakan perubahan: Pemberitahuan Yes 1.0
Pelacakan perubahan: Proksi Yes 5.0
Mengakses keadaan yang dilacak Yes 1.0
Konkurensi optimis Yes 1.0
Transactions Yes 1.0
Pengelompokan pernyataan 1.0
Pemetaan prosedur yang tersimpan Yes 7.0
API tingkat rendah grafik terputus Buruk 1.0
Graf tidak terhubung End-to-end 1.0 (parsial; #5536)

Fitur lainnya

Feature EF6.4 EF Core
Migrations Yes 1.0
API pembuatan/penghapusan database Yes 1.0
Data awalan Yes 2.1
Ketahanan koneksi Yes 1.1
Interseptor Yes 3.0
Events Yes 3.0 (parsial; #626)
Pengelogan Sederhana (Database.Log) Yes 5.0
Pengelolaan DbContext 2.0

Penyedia database (2)

Feature EF6.4 EF Core
SQL Server Yes 1.0
MySQL Yes 1.0
PostgreSQL Yes 1.0
Oracle Yes 1.0
SQLite Yes 1.0
SQL Server Kompak Yes 1.0 (3)
DB2 Yes 1.0
Firebird Yes 2.0
Jet (Microsoft Access) 2.0 (3)
Azure Cosmos DB 3.0
Dalam memori (untuk pengujian) 1.0

1 Beberapa fitur EF6 tidak akan diterapkan di EF Core. Fitur-fitur ini bergantung pada Model Data Entitas (EDM) EF6 yang mendasar dan/atau merupakan fitur kompleks dengan pengembalian investasi yang relatif rendah. Kami selalu menerima umpan balik, tetapi sementara EF Core memungkinkan banyak hal yang tidak mungkin di EF6, sebaliknya tidak layak bagi EF Core untuk mendukung semua fitur EF6.

2 Penyedia database EF Core yang diterapkan oleh pihak ketiga dapat tertunda dalam memperbarui ke versi utama baru EF Core. Lihat Penyedia Database untuk informasi selengkapnya.

3 Penyedia SQL Server Compact dan Jet hanya berfungsi pada .NET Framework (bukan di .NET Core).

Platform yang didukung

EF Core 3.1 berjalan pada .NET Core dan .NET Framework, melalui penggunaan .NET Standard 2.0. Namun, EF Core 5.0 tidak berjalan pada .NET Framework. Lihat Platform untuk detail selengkapnya.

EF6.4 berjalan pada .NET Core dan .NET Framework, dengan penargetan ganda.

Panduan untuk aplikasi baru

Gunakan EF Core di .NET Core untuk semua aplikasi baru kecuali aplikasi memerlukan sesuatu yang hanya didukung pada .NET Framework.

Panduan untuk aplikasi EF6 yang ada

EF Core tidak bisa langsung menjadi pengganti untuk EF6. Berpindah dari EF6 ke EF Core kemungkinan akan memerlukan perubahan pada aplikasi Anda.

Saat memindahkan aplikasi EF6 ke .NET Core:

  • Tetap gunakan EF6 jika kode akses data stabil dan tidak mungkin berevolusi atau memerlukan fitur baru.
  • Port ke EF Core jika kode akses data berkembang atau jika aplikasi memerlukan fitur baru hanya tersedia di EF Core.
  • Porting ke EF Core juga sering dilakukan untuk performa. Namun, tidak semua skenario lebih cepat, jadi lakukan pembuatan profil terlebih dahulu.

Lihat Porting dari EF6 ke EF Core untuk informasi selengkapnya.