Penyedia Entity Framework 6
Catatan
Hanya EF6 dan seterusnya - Fitur, API, dll. yang dibahas di halaman ini dimasukkan dalam Entity Framework 6. Jika Anda menggunakan versi yang lebih lama, beberapa atau semua informasi tidak berlaku.
Entity Framework saat ini sedang dikembangkan di bawah lisensi sumber terbuka dan EF6 ke atas tidak akan dikirim sebagai bagian dari .NET Framework. Ini memiliki banyak keuntungan tetapi juga mengharuskan penyedia EF dibangun kembali terhadap rakitan EF6. Ini berarti bahwa penyedia EF untuk EF5 dan di bawahnya tidak akan berfungsi dengan EF6 sampai dibangun kembali.
Penyedia mana yang tersedia untuk EF6?
Penyedia yang diketahui telah dibangun kembali untuk EF6 meliputi:
- Penyedia Microsoft SQL Server
- Dibangun dari basis kode sumber terbuka Entity Framework
- Dikirim sebagai bagian dari paket EntityFramework NuGet
- Penyedia Microsoft SQL Server Compact Edition
- Dibangun dari basis kode sumber terbuka Entity Framework
- Dikirim dalam paket EntityFramework.SqlServerCompact NuGet
- Penyedia Data Devart dotConnect
- Ada penyedia pihak ketiga dari Devart untuk berbagai database termasuk Oracle, MySQL, PostgreSQL, SQLite, Salesforce, DB2, dan SQL Server
- Penyedia CData Software
- Ada penyedia pihak ketiga dari CData Software untuk berbagai penyimpanan data termasuk Salesforce, Azure Table Storage, MySql, dan banyak lagi
- Penyedia Firebird
- Tersedia sebagai Paket NuGet
- Penyedia Visual Fox Pro
- Tersedia sebagai paket NuGet
- MySQL
- PostgreSQL
- Npgsql tersedia sebagai paket NuGet
- Oracle
- ODP.NET tersedia sebagai paket NuGet
- Sqlite
- System.Data.SQLite tersedia sebagai paket NuGet
Perhatikan bahwa penyertaan dalam daftar ini tidak menunjukkan tingkat fungsionalitas atau dukungan untuk penyedia tertentu, hanya saja build untuk EF6 telah tersedia.
Mendaftarkan penyedia EF
Mulai dari Entity Framework 6, penyedia EF dapat didaftarkan menggunakan konfigurasi berbasis kode atau dalam file konfigurasi aplikasi.
Pendaftaran file konfigurasi
Pendaftaran penyedia EF di app.config atau web.config memiliki format sebagai berikut:
<entityFramework>
<providers>
<provider invariantName="My.Invariant.Name" type="MyProvider.MyProviderServices, MyAssembly" />
</providers>
</entityFramework>
Perhatikan bahwa sering kali jika penyedia EF diinstal dari NuGet, maka paket NuGet akan otomatis menambahkan pendaftaran ini ke file konfigurasi. Jika Anda menginstal paket NuGet ke dalam proyek yang bukan proyek startup untuk aplikasi Anda, maka Anda mungkin perlu menyalin pendaftaran ke file konfigurasi untuk proyek startup Anda.
“invariantName” dalam pendaftaran ini adalah nama invarian yang sama dengan yang digunakan untuk mengidentifikasi penyedia ADO.NET. Ini dapat ditemukan sebagai atribut "invariant" dalam pendaftaran DbProviderFactories dan sebagai atribut "providerName" dalam pendaftaran string koneksi. Nama invarian yang akan digunakan juga harus disertakan dalam dokumentasi untuk penyedia. Contoh nama invarian adalah “System.Data.SqlClient” untuk SQL Server dan “System.Data.SqlServerCe.4.0” untuk SQL Server Compact.
"Type" dalam pendaftaran ini adalah nama yang memenuhi syarat perakitan dari jenis penyedia yang berasal dari "System.Data.Entity.Core.Common.DbProviderServices". Misalnya, string yang akan digunakan untuk SQL Compact adalah “System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact”. Jenis yang digunakan di sini harus disertakan dalam dokumentasi untuk penyedia.
Pendaftaran berbasis kode
Mulai dari konfigurasi seluruh aplikasi Entity Framework 6 untuk EF dapat ditentukan dalam kode. Untuk detail selengkapnya, lihat Konfigurasi Berbasis Kode Entity Framework. Cara konvensional untuk mendaftarkan penyedia EF menggunakan konfigurasi berbasis kode adalah dengan membuat kelas baru yang diturunkan dari System.Data.Entity.DbConfiguration dan menempatkannya di rakitan yang sama dengan kelas DbContext Anda. Kelas DbConfiguration Anda kemudian akan mendaftarkan penyedia di konstruktornya. Misalnya, untuk mendaftarkan penyedia SQL Compact, kelas DbConfiguration terlihat seperti ini:
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
SetProviderServices(
SqlCeProviderServices.ProviderInvariantName,
SqlCeProviderServices.Instance);
}
}
Kode ini "SqlCeProviderServices.ProviderInvariantName" berisi kemudahan untuk string nama invarian penyedia SQL Server Compact ("System.Data.SqlServerCe.4.0") dan SqlCeProviderServices.Instance menampilkan instans tunggal dari penyedia SQL Compact EF.
Bagaimana jika penyedia yang saya butuhkan tidak tersedia?
Jika penyedia tersedia untuk versi EF sebelumnya, sebaiknya Anda menghubungi pemilik penyedia dan meminta mereka untuk membuat versi EF6. Anda harus menyertakan referensi ke dokumentasi untuk model penyedia EF6.
Apakah saya dapat menulis penyedia sendiri?
Anda bisa saja membuat penyedia EF sendiri meskipun tidak boleh dianggap sebagai perbuatan yang sepele. Tautan tentang model penyedia EF6 di atas adalah awal yang tepat untuk memulai. Anda mungkin juga merasa bahwa penggunaan kode untuk SQL Server dan penyedia SQL CE yang disertakan dalam basis kode sumber terbuka EF sebagai titik awal atau untuk referensi adalah hal yang berguna.
Perhatikan bahwa mulai dari EF6, penyedia EF tidak terlalu terikat erat dengan penyedia ADO.NET yang mendasarinya. Ini memudahkan penulisan penyedia EF tanpa perlu menulis atau membungkus kelas ADO.NET.