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.