Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Jika Anda tidak menggunakan Visual Studio, kami merekomendasikan Alat Baris Perintah EF Core sebagai gantinya. Alat .NET CLI adalah lintas platform dan berjalan di dalam prompt perintah.
Warning
Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.
Pasang perangkat ini
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.>
Gunakan 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
parameter .-ProjectProyek startup adalah proyek yang dibangun dan dijalankan oleh alat tersebut. 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
parameter .-StartupProject
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 di pustaka kelas .NET.
- Aplikasi konsol .NET 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 atau .NET Framework. Aplikasi yang memiliki model EF Core di pustaka kelas .NET Standard mungkin tidak memiliki proyek .NET atau .NET Framework. Misalnya, ini benar aplikasi Xamarin dan Platform Windows Universal. Dalam kasus seperti itu, Anda dapat membuat proyek aplikasi konsol .NET atau .NET Framework yang satu-satunya tujuannya adalah bertindak sebagai proyek startup untuk alat tersebut. Proyek ini dapat menjadi proyek dummy tanpa kode nyata - hanya diperlukan untuk menyediakan target untuk alat.
Important
Xamarin.Android, Xamarin.iOS, Xamarin.Mac sekarang terintegrasi langsung ke dalam .NET (dimulai dengan .NET 6) sebagai .NET untuk Android, .NET untuk iOS, dan .NET untuk macOS. Jika Anda membangun dengan jenis proyek ini saat ini, proyek tersebut harus ditingkatkan ke proyek gaya .NET SDK untuk dukungan berkelanjutan. Untuk informasi selengkapnya tentang meningkatkan proyek Xamarin ke .NET, lihat dokumentasi Tingkatkan dari Xamarin ke .NET & .NET MAUI.
Mengapa proyek dummy diperlukan? Seperti disebutkan sebelumnya, alat harus menjalankan kode aplikasi pada waktu desain. Untuk melakukannya, mereka perlu menggunakan runtime .NET atau .NET Framework. Ketika model EF Core berada dalam proyek yang menargetkan .NET 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 | Description |
|---|---|
-Context <String> |
Kelas DbContext yang digunakan. Nama kelas saja atau sepenuhnya ditentukan dengan namespace. Jika parameter ini dihilangkan, EF Core akan menemukan kelas konteks. Jika ada beberapa kelas konteks, parameter ini diperlukan. |
-Project <String> |
Proyek sasaran. Jika parameter ini dihilangkan, proyek Default untuk Package Manager Console digunakan sebagai proyek target. |
-StartupProject <String> |
Proyek perusahaan rintisan. Jika parameter ini dihilangkan, Startup project di Solution properties 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.
Parameters:
| Parameter | Description |
|---|---|
-Name <String> |
Nama migrasi. Ini adalah parameter posisi dan diperlukan. |
-OutputDir <String> |
Direktori yang digunakan untuk keluaran file. Jalur relatif terhadap direktori proyek target. Diset default ke "Migrasi". |
-Namespace <String> |
Namespace yang akan digunakan untuk kelas yang dihasilkan. Secara default diatur dari direktori output. |
Parameter umum tercantum di atas.
Bundle-Migration
Membuat executable untuk memperbarui database.
Parameters:
| Parameter | Description |
|---|---|
-Output <String> |
Lokasi berkas yang dapat dieksekusi untuk dibuat. |
-Force |
Timpa file yang sudah ada. |
-SelfContained |
Bundel juga runtime .NET sehingga tidak perlu diinstal pada komputer. |
-TargetRuntime <String> |
Target runtime yang akan dibundel. |
-Framework <String> |
Kerangka kerja target. Secara default memilih yang pertama dalam proyek. |
Parameter umum tercantum di atas.
Drop-Database
Menghapus database.
Parameters:
| Parameter | Description |
|---|---|
-WhatIf |
Perlihatkan database mana yang akan dihilangkan, tetapi jangan jatuhkan. |
-Connection <String> |
string koneksi ke database. Mengatur ke default yang ditentukan dalam AddDbContext atau OnConfiguring. Ditambahkan dalam EF Core 11. |
Parameter umum tercantum di atas.
Get-DbContext
Mendaftarkan dan mendapatkan informasi tentang jenis DbContext yang tersedia.
Parameter umum tercantum di atas.
Get-Migration
Daftar migrasi yang tersedia.
Parameters:
| Parameter | Description |
|---|---|
-Connection <String> |
string sambungan ke database. Menggunakan pengaturan default yang ditentukan dalam AddDbContext atau OnConfiguring. |
-NoConnect |
Jangan sambungkan ke database. |
Parameter umum tercantum di atas.
Optimize-DbContext
Menghasilkan versi terkompilasi dari model yang digunakan oleh DbContext.
Lihat Model yang dikompilasi untuk informasi selengkapnya.
Parameters:
| Parameter | Description |
|---|---|
-OutputDir <String> |
Direktori untuk memasukkan file. Jalur relatif terhadap direktori proyek. |
-Namespace <String> |
Namespace yang digunakan untuk semua kelas yang dihasilkan. Pengaturan default dihasilkan dari namespace akar dan directori keluaran ditambah CompiledModels. |
Parameter umum tercantum di atas.
Note
Alat PMC saat ini tidak mendukung pembuatan kode yang diperlukan untuk kompilasi NativeAOT dan kueri yang telah dikompilasi sebelumnya.
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
Remove-Migration
Menghapus migrasi terakhir (mengembalikan perubahan kode yang dilakukan untuk migrasi).
Parameters:
| Parameter | Description |
|---|---|
-Force |
Kembalikan migrasi (gulung balik perubahan yang diterapkan ke database). |
-Connection <String> |
string sambungan ke database. Mengatur ke default yang ditentukan dalam AddDbContext atau OnConfiguring. Ditambahkan dalam EF Core 11. |
-Offline |
Hapus migrasi tanpa menyambungkan ke database. Ditambahkan dalam EF Core 11. |
Parameter umum tercantum di atas.
Note
Parameter -Offline dan -Force tidak dapat digunakan bersama-sama, karena -Force memerlukan koneksi database untuk memeriksa apakah migrasi telah diterapkan sebelum mengembalikannya.
Scaffold-DbContext
Menghasilkan kode untuk DbContext dan jenis entitas untuk database. Agar Scaffold-DbContext dapat menghasilkan jenis entitas, tabel database harus memiliki kunci primer.
Parameters:
| Parameter | Description |
|---|---|
-Connection <String> |
string sambungan ke database. Nilainya bisa berupa name=<nama 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 yang digunakan untuk semua kelas yang dihasilkan. Setelan Awal mengacu pada namespace akar dan direktori output. |
-ContextNamespace <String> |
Namespace yang digunakan untuk kelas yang dihasilkan DbContext . Catatan: mengambil alih -Namespace. |
-Context <String> |
Nama kelas DbContext yang 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 sudah ada. |
-NoOnConfiguring |
Jangan hasilkan DbContext.OnConfiguring. |
-NoPluralize |
Jangan gunakan pluralizer. |
Parameter umum tercantum di atas.
Example:
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 menggunakan Konfigurasi.
Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer
Script-DbContext
Menghasilkan skrip SQL dari DbContext. Melewati migrasi apa pun.
Parameters:
| Parameter | Description |
|---|---|
-Output <String> |
Berkas untuk menyimpan hasil. |
Parameter umum tercantum di atas.
Script-Migration
Menghasilkan skrip SQL yang menerapkan semua perubahan dari satu migrasi yang dipilih ke migrasi lain yang dipilih.
Parameters:
| Parameter | Description |
|---|---|
-From <String> |
Memulai migrasi. Migrasi dapat diidentifikasi berdasarkan nama atau berdasarkan ID. Angka 0 adalah kasus khusus yang berarti sebelum migrasi pertama. Berval menjadi 0. |
-To <String> |
Migrasi akhir. Diatur ke migrasi terakhir secara otomatis. |
-Idempotent |
Buat skrip yang dapat digunakan pada database di migrasi apa pun. |
-NoTransactions |
Jangan membuat pernyataan transaksi SQL. |
-Output <String> |
Berkas untuk menyimpan hasil. 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 | Description |
|---|---|
-Migration <String> |
Migrasi yang ditargetkan. 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 sambungan ke database. Mengatur ke default yang ditentukan dalam AddDbContext atau OnConfiguring. |
Parameter umum tercantum di atas.
Tip
Parameter Migration mendukung ekspansi tab.
Contoh berikut membatalkan 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