Memindahkan Model Berbasis Kode EF6 ke EF Core
Jika Anda telah membaca semua peringatan dan anda siap untuk port, maka berikut adalah beberapa panduan untuk membantu Anda memulai.
Menginstal paket EF Core NuGet
Untuk menggunakan EF Core, Anda menginstal paket NuGet untuk penyedia database yang ingin Anda gunakan. Misalnya, saat menargetkan SQL Server, Anda akan menginstal Microsoft.EntityFrameworkCore.SqlServer
. Lihat Penyedia Database untuk detailnya.
Jika Anda berencana menggunakan migrasi, maka Anda juga harus menginstal Microsoft.EntityFrameworkCore.Tools
paket.
Tidak masalah untuk membiarkan paket EF6 NuGet (EntityFramework) diinstal, karena EF Core dan EF6 dapat digunakan berdampingan dalam aplikasi yang sama. Namun, jika Anda tidak berniat menggunakan EF6 di area aplikasi Apa pun, maka menghapus instalan paket akan membantu memberikan kesalahan kompilasi pada potongan kode yang perlu diperhatikan.
Menukar namespace layanan
Sebagian besar API yang Anda gunakan di EF6 berada di System.Data.Entity
namespace (dan sub-namespace terkait). Perubahan kode pertama adalah menukar ke Microsoft.EntityFrameworkCore
namespace layanan. Anda biasanya akan mulai dengan file kode konteks turunan Anda dan kemudian bekerja dari sana, mengatasi kesalahan kompilasi saat terjadi.
Konfigurasi konteks (koneksi dll.)
Seperti yang dijelaskan dalam mengonfigurasi koneksi database, EF Core memiliki lebih sedikit keajaiban dalam mendeteksi database yang akan disambungkan. Anda harus mengambil OnConfiguring
alih metode pada konteks turunan Anda, dan menggunakan API khusus penyedia database untuk menyiapkan koneksi ke database.
Sebagian besar aplikasi EF6 menyimpan string koneksi dalam file aplikasiApp/Web.config
. Di EF Core, Anda membaca string koneksi ini menggunakan ConfigurationManager
API. Anda mungkin perlu menambahkan referensi ke perakitan System.Configuration
kerangka kerja untuk dapat menggunakan API ini.
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
}
}
Memperbarui kode Anda
Pada titik ini, ini adalah masalah mengatasi kesalahan kompilasi dan meninjau kode untuk melihat apakah perubahan perilaku akan berdampak pada Anda.
Migrasi yang ada
Tidak benar-benar ada cara yang layak untuk memindahkan migrasi EF6 yang ada ke EF Core.
Jika memungkinkan, yang terbaik adalah mengasumsikan bahwa semua migrasi sebelumnya dari EF6 telah diterapkan ke database dan kemudian mulai memigrasikan skema dari titik itu menggunakan EF Core. Untuk melakukan ini, Anda akan menggunakan Add-Migration
perintah untuk menambahkan migrasi setelah model di-port ke EF Core. Anda kemudian akan menghapus semua kode dari Up
metode dan Down
migrasi perancah. Migrasi berikutnya akan dibandingkan dengan model ketika migrasi awal tersebut dibuat perancah.
Menguji port
Hanya karena aplikasi Anda dikompilasi, bukan berarti aplikasi berhasil di-port ke EF Core. Anda harus menguji semua area aplikasi Anda untuk memastikan bahwa tidak ada perubahan perilaku yang berdampak buruk pada aplikasi Anda.
Terakhir, tinjau kasus terperinci yang perlu dipertimbangkan saat porting untuk saran lebih lanjut tentang kasus dan skenario tertentu dalam kode Anda.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk