Meningkatkan ke Kerangka Kerja Entitas 6
Dalam versi EF sebelumnya, kode dibagi antara pustaka inti (terutama System.Data.Entity.dll) yang dikirim sebagai bagian dari pustaka .NET Framework dan out-of-band (OOB) (terutama EntityFramework.dll) yang dikirim dalam paket NuGet. EF6 mengambil kode dari pustaka inti dan menggabungkannya ke dalam pustaka OOB. Ini diperlukan untuk memungkinkan EF dibuat sumber terbuka dan agar dapat berkembang dengan kecepatan yang berbeda dari .NET Framework. Konsekuensinya adalah bahwa aplikasi harus dibangun kembali terhadap jenis yang dipindahkan.
Ini harus mudah untuk aplikasi yang menggunakan DbContext seperti yang dikirim di EF 4.1 dan yang lebih baru. Sedikit lebih banyak pekerjaan diperlukan untuk aplikasi yang menggunakan ObjectContext tetapi masih tidak sulit untuk dilakukan.
Berikut adalah daftar periksa hal-hal yang perlu Anda lakukan untuk meningkatkan aplikasi yang ada ke EF6.
1. Instal paket EF6 NuGet
Anda perlu meningkatkan ke runtime Entity Framework 6 baru.
- Klik kanan pada proyek Anda dan pilih Kelola Paket NuGet...
- Di bawah tab Online pilih EntityFramework dan klik Instal
Catatan
Jika versi paket EntityFramework NuGet sebelumnya diinstal, ini akan meningkatkannya ke EF6.
Atau, Anda dapat menjalankan perintah berikut dari Package Manager Console:
Install-Package EntityFramework
2. Pastikan bahwa referensi rakitan ke System.Data.Entity.dll dihapus
Menginstal paket EF6 NuGet harus secara otomatis menghapus referensi apa pun ke System.Data.Entity dari proyek Anda untuk Anda.
3. Tukar model EF Designer (EDMX) apa pun untuk menggunakan pembuatan kode EF 6.x
Jika Anda memiliki model yang dibuat dengan EF Designer, Anda harus memperbarui templat pembuatan kode untuk menghasilkan kode yang kompatibel dengan EF6.
Catatan
Saat ini hanya ada templat Generator EF 6.x DbContext yang tersedia untuk Visual Studio 2012 dan 2013.
Hapus templat pembuatan kode yang ada. File-file ini biasanya akan diberi nama edmx_file_name.tt> dan <edmx_file_name.Context.tt> dan disarangkan di bawah file edmx Anda di Penjelajah Solusi.< Anda dapat memilih templat di Penjelajah Solusi dan menekan tombol Del untuk menghapusnya.
Catatan
Di Situs Web proyeksikan templat tidak akan disarangkan di bawah file edmx Anda, tetapi tercantum bersama dengannya dalam Penjelajah Solusi.
Catatan
Dalam proyek VB.NET Anda harus mengaktifkan 'Tampilkan Semua File' untuk dapat melihat file templat berlapis.
Tambahkan templat pembuatan kode EF 6.x yang sesuai. Buka model Anda di Desainer EF, klik kanan pada permukaan desain dan pilih Tambahkan Item Pembuatan Kode...
Jika Anda menggunakan DbContext API (disarankan) maka Generator EF 6.x DbContext akan tersedia di bawah tab Data .
Catatan
Jika Anda menggunakan Visual Studio 2012, Anda harus menginstal Alat EF 6 untuk memiliki templat ini. Lihat Mendapatkan Kerangka Kerja Entitas untuk detailnya.
Jika Anda menggunakan OBJECTContext API maka Anda harus memilih tab Online dan mencari Generator EntityObject EF 6.x.
Jika Anda menerapkan kustomisasi apa pun ke templat pembuatan kode, Anda harus menerapkannya kembali ke templat yang diperbarui.
4. Perbarui namespace layanan untuk jenis EF inti apa pun yang digunakan
Namespace layanan untuk jenis DbContext dan Code First belum berubah. Ini berarti untuk banyak aplikasi yang menggunakan EF 4.1 atau yang lebih baru, Anda tidak perlu mengubah apa pun.
Jenis seperti ObjectContext yang sebelumnya ada di System.Data.Entity.dll telah dipindahkan ke namespace baru. Ini berarti Anda mungkin perlu memperbarui direktif penggunaan atau Impor untuk membangun terhadap EF6.
Aturan umum untuk perubahan namespace adalah bahwa jenis apa pun di System.Data.* dipindahkan ke System.Data.Entity.Core.*. Dengan kata lain, cukup masukkan Entity.Core. setelah System.Data. Contohnya:
- System.Data.EntityException => System.Data.Entity.Core. EntityException
- System.Data.Objects.ObjectContext => System.Data.Entity.Core. Objects.ObjectContext
- System.Data.Objects.DataClasses.RelationshipManager => System.Data.Entity.Core. Objects.DataClasses.RelationshipManager
Jenis ini berada di namespace layanan Inti karena tidak digunakan langsung untuk sebagian besar aplikasi berbasis DbContext. Beberapa jenis yang merupakan bagian dari System.Data.Entity.dll masih digunakan secara umum dan langsung untuk aplikasi berbasis DbContext dan belum dipindahkan ke namespace layanan Inti . Berikut adalah:
- System.Data.EntityState => System.Data.Entitas. EntityState
- System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute
Catatan
Kelas ini telah diganti namanya; kelas dengan nama lama masih ada dan berfungsi, tetapi sekarang ditandai sebagai usang.
- System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions
Catatan
Kelas ini telah diganti namanya; kelas dengan nama lama masih ada dan berfungsi, tetapi sekarang ditandai sebagai usang.)
- Kelas spasial (misalnya, DbGeography, DbGeometry) telah berpindah dari System.Data.Spatial => System.Data.Entitas. Spasial
Catatan
Beberapa jenis di namespace System.Data ada di System.Data.dll yang bukan rakitan EF. Jenis ini belum dipindahkan dan sehingga namespace layanannya tetap tidak berubah.