Bagikan melalui


Membandingkan EF Core & EF6

EF Core

Entity Framework Core (EF Core) adalah pemeta database objek modern untuk .NET. Fitur 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 database lainnya 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 diimplementasikan di EF6. Namun, tidak semua fitur EF6 saat ini diimplementasikan 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

Fitur EF6.4 Inti EF
Pemetaan kelas dasar Ya 1.0
Konstruktor dengan parameter 2.1
Konversi nilai properti 2.1
Jenis yang dipetakan tanpa kunci 2.1
Konvensi Ya 1.0
Konvensi kustom Ya 7,0
Anotasi data Ya 1.0
API Fluent Ya 1.0
Warisan: Tabel per hierarki (TPH) Ya 1.0
Warisan: Tabel per jenis (TPT) Ya 5.0
Warisan: Tabel per kelas kon.kret (TPC) Ya 7,0
Properti status bayangan 1.0
Kunci alternatif 1.0
Navigasi banyak ke banyak Ya 5.0
Banyak ke banyak tanpa entitas gabungan Ya 5.0
Pembuatan kunci: Database Ya 1.0
Pembuatan kunci: Klien 1.0
Jenis kompleks/dimiliki Ya 2.0
Data spasial Ya 2.2
Format model: Kode Ya 1.0
Membuat model dari database: Baris perintah Ya 1.0
Memperbarui model dari database Sebagian Di backlog (#831)
Filter kueri global 2.0
Pemisahan tabel Ya 2.0
Pemisahan entitas Ya 7,0
Pemetaan fungsi skalar database Blok 2.0
Pemetaan fungsi bernilai tabel database Blok 5.0
Pemetaan bidang 1.1
Jenis referensi yang dapat diubah ke null (C# 8.0) 3.0
Visualisasi grafis model Ya Tidak ada dukungan yang direncanakan (1)
Editor model grafis Ya Tidak ada dukungan yang direncanakan (1)
Format model: EDMX (XML) Ya Tidak ada dukungan yang direncanakan (1)
Membuat model dari database: Wizard VS Ya Tidak ada dukungan yang direncanakan (1)

Meng-kueri data

Fitur EF6.4 Inti EF
Kueri LINQ Ya 1.0
SQL yang dihasilkan dapat dibaca Blok 1.0
Terjemahan GroupBy Ya 2.1
Memuat data terkait: Bersemangat Ya 1.0
Memuat data terkait: Pemuatan Bersemangat untuk jenis turunan 2.1
Memuat data terkait: Malas Ya 2.1
Memuat data terkait: Eksplisit Ya 1.1
Kueri SQL mentah: Jenis entitas Ya 1.0
Kueri SQL mentah: Jenis entitas tanpa kunci Ya 2.1
Kueri SQL mentah: Menyusun dengan LINQ 1.0
Kueri yang dikompilasi secara eksplisit Blok 2.0
menunggu foreach (C# 8.0) 3.0
Bahasa kueri berbasis teks (Entity SQL) Ya Tidak ada dukungan yang direncanakan (1)

Menyimpan data

Fitur EF6.4 Inti EF
Pelacakan perubahan: Snapshot Ya 1.0
Pelacakan perubahan: Pemberitahuan Ya 1.0
Pelacakan perubahan: Proksi Ya 5.0
Mengakses status terlacak Ya 1.0
Konkurensi optimis Ya 1.0
Transaksi Ya 1.0
Kumpulan pernyataan 1.0
Pemetaan prosedur tersimpan Ya 7,0
API tingkat rendah grafik terputus Blok 1.0
Grafik terputus Secara Menyeluruh 1.0 (parsial; #5536)

Fitur lainnya

Fitur EF6.4 Inti EF
Migrasi Ya 1.0
API pembuatan/penghapusan database Ya 1.0
Data Seed Ya 2.1
Ketahanan koneksi Ya 1.1
Interseptor Ya 3.0
Aktivitas Ya 3.0 (parsial; #626)
Pengelogan Sederhana (Database.Log) Ya 5.0
Pengumpulan DbContext 2.0

Penyedia database (2)

Fitur EF6.4 Inti EF
Server SQL Ya 1.0
MySQL Ya 1.0
PostgreSQL Ya 1.0
Oracle Ya 1.0
SQLite Ya 1.0
Microsoft SQL Server Compact Ya 1.0 (3)
DB2 Ya 1.0
Firebird Ya 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 diimplementasikan di EF Core. Fitur-fitur ini bergantung pada EF6 yang mendasari Model data Entitas (EDM) dan/atau fitur kompleks dengan pengembalian investasi yang relatif rendah. Kami selalu menyambut umpan balik, tetapi meskipun EF Core memungkinkan banyak hal yang tidak mungkin dilakukan di EF6, EF Core tidak dapat mendukung semua fitur EF6.

2 Penyedia database EF Core yang diterapkan oleh pihak ketiga dapat tertunda dalam memperbarui ke versi utama EF Core yang baru. 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, melalui multi-penargetan.

Panduan untuk aplikasi baru

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

Panduan untuk aplikasi EF6 yang ada

EF Core bukan pengganti drop-in 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 berkembang atau membutuhkan fitur baru.
  • Mem-porting ke EF Core jika kode akses data berkembang atau jika aplikasi membutuhkan fitur baru yang 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 Penyambungan dari EF6 ke EF Core untuk informasi selengkapnya.