Referensi alat Entity Framework Core - Konsol Manajer Paket di Visual Studio

Alat Package Manager Console (PMC) untuk Entity Framework Core melakukan tugas pengembangan waktu desain. Misalnya, mereka membuat migrasi, menerapkan migrasi, dan menghasilkan kode untuk model berdasarkan database yang ada. Perintah berjalan di dalam Visual Studio menggunakan Package Manager Console. Alat-alat ini berfungsi dengan proyek .NET Framework dan .NET Core.

Jika Anda tidak menggunakan Visual Studio, kami merekomendasikan Alat Baris Perintah EF Core sebagai gantinya. Alat .NET Core CLI adalah lintas platform dan berjalan di dalam prompt perintah.

Menginstal alat

Instal alat Package Manager Console dengan menjalankan perintah berikut di Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Perbarui alat dengan menjalankan perintah berikut di Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Memverifikasi penginstalan

Verifikasi bahwa alat diinstal dengan menjalankan perintah ini:

Get-Help about_EntityFrameworkCore

Output terlihat seperti ini (tidak memberi tahu Anda versi alat mana yang Anda gunakan):


                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\

TOPIC
    about_EntityFrameworkCore

SHORT DESCRIPTION
    Provides information about the Entity Framework Core Package Manager Console Tools.

<A list of available commands follows, omitted here.>

Menggunakan alat

Sebelum menggunakan alat:

  • Pahami perbedaan antara target dan proyek startup.
  • Pelajari cara menggunakan alat dengan pustaka kelas .NET Standard.
  • Untuk proyek ASP.NET Core, atur lingkungan.

Proyek target dan startup

Perintah merujuk ke proyek dan proyek startup.

  • Proyek ini juga dikenal sebagai proyek target karena merupakan tempat perintah menambahkan atau menghapus file. Secara default, proyek Default yang dipilih di Package Manager Console adalah proyek target. Anda dapat menentukan proyek yang berbeda sebagai proyek target dengan menggunakan -Project parameter .

  • Proyek startup adalah proyek yang dibangun dan dijalankan alat. Alat harus menjalankan kode aplikasi pada waktu desain untuk mendapatkan informasi tentang proyek, seperti string koneksi database dan konfigurasi model. Secara default, Proyek Startup di Penjelajah Solusi adalah proyek startup. Anda dapat menentukan proyek yang berbeda sebagai proyek startup dengan menggunakan -StartupProject parameter .

Proyek startup dan proyek target sering kali merupakan proyek yang sama. Skenario umum di mana mereka adalah proyek terpisah adalah ketika:

  • Kelas konteks dan entitas EF Core berada dalam pustaka kelas .NET Core.
  • Aplikasi konsol .NET Core atau aplikasi web mereferensikan pustaka kelas.

Dimungkinkan juga untuk menempatkan kode migrasi di pustaka kelas terpisah dari konteks EF Core.

Kerangka kerja target lainnya

Alat Package Manager Console berfungsi dengan proyek .NET Core atau .NET Framework. Aplikasi yang memiliki model EF Core di pustaka kelas .NET Standard mungkin tidak memiliki proyek .NET Core atau .NET Framework. Misalnya, ini benar aplikasi Xamarin dan Platform Windows Universal. Dalam kasus seperti itu, Anda dapat membuat proyek aplikasi konsol .NET Core atau .NET Framework yang satu-satunya tujuannya adalah bertindak sebagai proyek startup untuk alat. Proyek ini dapat menjadi proyek dummy tanpa kode nyata - hanya diperlukan untuk menyediakan target untuk alat.

Mengapa proyek dummy diperlukan? Seperti disebutkan sebelumnya, alat harus menjalankan kode aplikasi pada waktu desain. Untuk melakukannya, mereka perlu menggunakan runtime .NET Core atau .NET Framework. Ketika model EF Core berada dalam proyek yang menargetkan .NET Core atau .NET Framework, alat EF Core meminjam runtime dari proyek. Mereka tidak dapat melakukannya jika model EF Core berada di pustaka kelas .NET Standard. Standar .NET bukan implementasi .NET yang sebenarnya; ini adalah spesifikasi dari sekumpulan API yang harus didukung oleh implementasi .NET. Oleh karena itu .NET Standard tidak cukup untuk alat EF Core untuk menjalankan kode aplikasi. Proyek dummy yang Anda buat untuk digunakan sebagai proyek startup menyediakan platform target konkret tempat alat dapat memuat pustaka kelas .NET Standard.

lingkungan ASP.NET Core

Anda dapat menentukan lingkungan untuk proyek ASP.NET Core pada baris perintah. Ini dan argumen tambahan apa pun diteruskan ke Program.CreateHostBuilder.

Update-Database -Args '--environment Production'

Parameter umum

Tabel berikut menunjukkan parameter yang umum untuk semua perintah EF Core:

Parameter Deskripsi
-Context <String> Kelas yang DbContext akan digunakan. Nama kelas saja atau sepenuhnya memenuhi syarat dengan namespace layanan. Jika parameter ini dihilangkan, EF Core akan menemukan kelas konteks. Jika ada beberapa kelas konteks, parameter ini diperlukan.
-Project <String> Proyek target. Jika parameter ini dihilangkan, proyek Default untuk Package Manager Console digunakan sebagai proyek target.
-StartupProject <String> Proyek startup. Jika parameter ini dihilangkan, proyek Startup di properti Solusi digunakan sebagai proyek target.
-Args <String> Argumen diteruskan ke aplikasi.
-Verbose Tampilkan output verbose.

Untuk menampilkan informasi bantuan tentang perintah, gunakan perintah PowerShell Get-Help .

Tip

Parameter Context, Project, dan StartupProject mendukung ekspansi tab.

Add-Migration

Menambahkan migrasi baru.

Parameter:

Parameter Deskripsi
-Name <String> Nama migrasi. Ini adalah parameter posisi dan diperlukan.
-OutputDir <String> Direktori menggunakan untuk menghasilkan file. Jalur relatif terhadap direktori proyek target. Default ke "Migrasi".
-Namespace <String> Namespace yang akan digunakan untuk kelas yang dihasilkan. Default yang dihasilkan dari direktori output.

Parameter umum tercantum di atas.

Bundel-Migrasi

Membuat executable untuk memperbarui database.

Parameter:

Parameter Deskripsi
-Output <String> Jalur file yang dapat dieksekusi untuk dibuat.
-Force Timpa file yang ada.
-SelfContained Bundel juga runtime .NET sehingga tidak perlu diinstal pada komputer.
-TargetRuntime <String> Runtime target yang akan dibundel.
-Framework <String> Kerangka kerja target. Default ke yang pertama dalam proyek.

Parameter umum tercantum di atas.

Drop-Database

Menghilangkan database.

Parameter:

Parameter Deskripsi
-WhatIf Perlihatkan database mana yang akan dihilangkan, tetapi jangan jatuhkan.

Parameter umum tercantum di atas.

Get-DbContext

Mencantumkan dan mendapatkan informasi tentang jenis yang tersedia DbContext .

Parameter umum tercantum di atas.

Get-Migration

Mencantumkan migrasi yang tersedia.

Parameter:

Parameter Deskripsi
-Connection <String> string koneksi ke database. Default ke yang ditentukan dalam AddDbContext atau OnConfiguring.
-NoConnect Jangan sambungkan ke database.

Parameter umum tercantum di atas.

Optimize-DbContext

Menghasilkan versi model yang dikompilasi yang digunakan oleh DbContext.

Lihat Model yang dikompilasi untuk informasi selengkapnya.

Parameter:

Parameter Deskripsi
-OutputDir <String> Direktori untuk memasukkan file. Jalur relatif terhadap direktori proyek.
-Namespace <String> Namespace layanan yang digunakan untuk semua kelas yang dihasilkan. Default yang dihasilkan dari namespace layanan akar dan direktori output ditambah CompiledModels.

Parameter umum tercantum di atas.

Contoh berikut menggunakan default dan berfungsi jika hanya ada satu DbContext dalam proyek:

Optimize-DbContext

Contoh berikut mengoptimalkan model untuk konteks dengan nama yang ditentukan dan menempatkannya di folder dan namespace terpisah:

Optimize-DbContext -OutputDir Models -Namespace BlogModels -Context BlogContext

Hapus-Migrasi

Menghapus migrasi terakhir (mengembalikan perubahan kode yang dilakukan untuk migrasi).

Parameter:

Parameter Deskripsi
-Force Kembalikan migrasi (gulung balik perubahan yang diterapkan ke database).

Parameter umum tercantum di atas.

Scaffold-DbContext

Menghasilkan kode untuk DbContext jenis entitas dan untuk database. Agar Scaffold-DbContext dapat menghasilkan jenis entitas, tabel database harus memiliki kunci primer.

Parameter:

Parameter Deskripsi
-Connection <String> string koneksi ke database. Untuk proyek ASP.NET Core 2.x, nilainya bisa berupa name=<name of string koneksi>. Dalam hal ini nama berasal dari sumber konfigurasi yang disiapkan untuk proyek. Ini adalah parameter posisi dan diperlukan.
-Provider <String> Penyedia yang akan digunakan. Biasanya ini adalah nama paket NuGet, misalnya: Microsoft.EntityFrameworkCore.SqlServer. Ini adalah parameter posisi dan diperlukan.
-OutputDir <String> Direktori untuk memasukkan file kelas entitas. Jalur relatif terhadap direktori proyek.
-ContextDir <String> Direktori untuk memasukkan DbContext file. Jalur relatif terhadap direktori proyek.
-Namespace <String> Namespace layanan yang digunakan untuk semua kelas yang dihasilkan. Default yang dihasilkan dari namespace layanan akar dan direktori output.
-ContextNamespace <String> Namespace yang digunakan untuk kelas yang dihasilkan DbContext . Catatan: mengambil alih -Namespace.
-Context <String> Nama kelas yang DbContext akan dihasilkan.
-Schemas <String[]> Skema tabel dan tampilan untuk menghasilkan jenis entitas. Jika parameter ini dihilangkan, semua skema disertakan. Jika opsi ini digunakan, maka semua tabel dan tampilan dalam skema akan disertakan dalam model, bahkan jika mereka tidak secara eksplisit disertakan menggunakan -Table.
-Tables <String[]> Tabel dan tampilan untuk menghasilkan jenis entitas. Tabel atau tampilan dalam skema tertentu dapat disertakan menggunakan format 'schema.table' atau 'schema.view'. Jika parameter ini dihilangkan, semua tabel dan tampilan disertakan.
-DataAnnotations Gunakan atribut untuk mengonfigurasi model (jika memungkinkan). Jika parameter ini dihilangkan, hanya API fasih yang digunakan.
-UseDatabaseNames Gunakan nama tabel, tampilan, urutan, dan kolom persis seperti yang muncul di database. Jika parameter ini dihilangkan, nama database diubah agar lebih sesuai dengan konvensi gaya nama C#.
-Force Timpa file yang ada.
-NoOnConfiguring Jangan hasilkan DbContext.OnConfiguring.
-NoPluralize Jangan gunakan pluralizer.

Parameter umum tercantum di atas.

Contoh:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Contoh bahwa perancah hanya memilih tabel dan membuat konteks dalam folder terpisah dengan nama dan namespace yang ditentukan:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables "Blog","Post" -ContextDir Context -Context BlogContext -ContextNamespace New.Namespace

Contoh berikut membaca string koneksi dari konfigurasi proyek yang mungkin diatur menggunakan alat Secret Manager.

Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer

Script-DbContext

Menghasilkan skrip SQL dari DbContext. Melewati migrasi apa pun.

Parameter:

Parameter Deskripsi
-Output <String> File untuk menulis hasilnya.

Parameter umum tercantum di atas.

Migrasi Skrip

Menghasilkan skrip SQL yang menerapkan semua perubahan dari satu migrasi yang dipilih ke migrasi lain yang dipilih.

Parameter:

Parameter Deskripsi
-From <String> Migrasi awal. Migrasi dapat diidentifikasi berdasarkan nama atau berdasarkan ID. Angka 0 adalah kasus khusus yang berarti sebelum migrasi pertama. Default ke 0.
-To <String> Migrasi akhir. Default ke migrasi terakhir.
-Idempotent Buat skrip yang dapat digunakan pada database di migrasi apa pun.
-NoTransactions Jangan membuat pernyataan transaksi SQL.
-Output <String> File untuk menulis hasilnya. JIKA parameter ini dihilangkan, file dibuat dengan nama yang dihasilkan di folder yang sama dengan file runtime aplikasi dibuat, misalnya: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.

Parameter umum tercantum di atas.

Tip

Parameter To, From, dan Output mendukung ekspansi tab.

Contoh berikut membuat skrip untuk migrasi InitialCreate (dari database tanpa migrasi apa pun), menggunakan nama migrasi.

Script-Migration 0 InitialCreate

Contoh berikut membuat skrip untuk semua migrasi setelah migrasi InitialCreate, menggunakan ID migrasi.

Script-Migration 20180904195021_InitialCreate

Update-Database

Memperbarui database ke migrasi terakhir atau ke migrasi tertentu.

Parameter Deskripsi
-Migration <String> Migrasi target. Migrasi dapat diidentifikasi berdasarkan nama atau berdasarkan ID. Angka 0 adalah kasus khusus yang berarti sebelum migrasi pertama dan menyebabkan semua migrasi dikembalikan. Jika tidak ada migrasi yang ditentukan, perintah default ke migrasi terakhir.
-Connection <String> string koneksi ke database. Default ke yang ditentukan dalam AddDbContext atau OnConfiguring.

Parameter umum tercantum di atas.

Tip

Parameter Migration mendukung ekspansi tab.

Contoh berikut mengembalikan semua migrasi.

Update-Database 0

Contoh berikut memperbarui database ke migrasi tertentu. Yang pertama menggunakan nama migrasi dan yang kedua menggunakan ID migrasi dan koneksi tertentu:

Update-Database InitialCreate
Update-Database 20180904195021_InitialCreate -Connection your_connection_string

Sumber Daya Tambahan: