Bagikan melalui


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.