Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.