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 antarmuka baris perintah (CLI) untuk Entity Framework Core melakukan tugas pengembangan pada saat desain. Misalnya, mereka membuat migrasi, menerapkan migrasi, dan menghasilkan kode untuk model berdasarkan database yang ada. Perintah ini merupakan ekstensi untuk perintah lintas platform dotnet, yang merupakan bagian dari .NET SDK. Alat-alat ini berfungsi dengan proyek .NET.
Saat menggunakan Visual Studio, pertimbangkan untuk menggunakan alat Package Manager Console alih-alih alat CLI. Alat Konsol Manajer Paket secara otomatis:
- Bekerja dengan proyek saat ini yang dipilih di Konsol Manajer Paket tanpa mengharuskan Anda beralih direktori secara manual.
- Membuka file yang dihasilkan oleh perintah setelah perintah selesai.
- Menyediakan penyelesaian tab perintah, parameter, nama proyek, jenis konteks, dan nama migrasi.
Menginstal alat
dotnet ef dapat diinstal sebagai alat global atau lokal. Sebagian besar pengembang lebih suka menginstal dotnet ef sebagai alat global menggunakan perintah berikut:
dotnet tool install --global dotnet-ef
Untuk menggunakannya sebagai alat lokal, pulihkan dependensi proyek yang mendeklarasikannya sebagai dependensi alat menggunakan file manifes alat.
Perbarui alat menggunakan perintah berikut:
dotnet tool update --global dotnet-ef
Sebelum Anda dapat menggunakan alat pada proyek tertentu, Anda harus menambahkan paket Microsoft.EntityFrameworkCore.Design ke dalamnya.
dotnet add package Microsoft.EntityFrameworkCore.Design
Verifikasi penginstalan
Jalankan perintah berikut untuk memverifikasi bahwa alat EF Core CLI diinstal dengan benar:
dotnet ef
Output dari perintah mengidentifikasi versi alat yang digunakan:
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065
<Usage documentation follows, not shown.>
Memperbarui alat
Gunakan dotnet tool update --global dotnet-ef untuk memperbarui alat global ke versi terbaru yang tersedia. Jika Anda memiliki alat yang diinstal secara lokal dalam proyek Anda, gunakan dotnet tool update dotnet-ef. Instal versi tertentu dengan menambahkan --version <VERSION> ke perintah Anda. Lihat bagian Pembaruan dari dokumentasi alat dotnet untuk detail selengkapnya.
Menggunakan alat
Sebelum menggunakan alat, Anda mungkin harus membuat proyek startup atau mengatur lingkungan.
Proyek target dan proyek 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 di direktori saat ini adalah proyek target. Anda dapat menentukan proyek yang berbeda sebagai proyek target dengan menggunakan
opsi .--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 di direktori saat ini adalah proyek startup. Anda dapat menentukan proyek yang berbeda sebagai proyek startup dengan menggunakan
opsi .--startup-project
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 CLI berfungsi dengan proyek .NET dan proyek .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 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.
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 melakukan itu, mereka perlu menggunakan runtime .NET. 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.
dotnet ef database update -- --environment Production
Tip
Token -- mengarahkan dotnet ef untuk memperlakukan semua yang mengikuti sebagai argumen dan tidak mencoba mengurainya sebagai opsi. Argumen tambahan apa pun yang tidak digunakan oleh dotnet ef diteruskan ke aplikasi.
Opsi umum
| Option | Short | Description |
|---|---|---|
--json |
Tampilkan output JSON. | |
--context <DBCONTEXT> |
-c |
Kelas DbContext yang digunakan. Nama kelas saja atau sepenuhnya ditentukan dengan namespace. Jika opsi ini dihilangkan, EF Core akan menemukan kelas konteks. Jika ada beberapa kelas konteks, opsi ini diperlukan. |
--project <PROJECT> |
-p |
Jalur relatif ke folder proyek proyek target. Nilai default adalah folder saat ini. |
--startup-project <PROJECT> |
-s |
Jalur relatif ke folder proyek proyek startup. Nilai default adalah folder saat ini. |
--framework <FRAMEWORK> |
Moniker Kerangka Kerja Target untuk kerangka target. Gunakan saat file proyek menentukan beberapa kerangka kerja target, dan Anda ingin memilih salah satunya. | |
--configuration <CONFIGURATION> |
Konfigurasi build, misalnya: Debug atau Release. |
|
--runtime <IDENTIFIER> |
Pengidentifikasi sistem target runtime untuk memulihkan paket. Untuk daftar Pengidentifikasi Runtime (RID), lihat katalog RID. | |
--no-build |
Jangan membangun proyek. Dimaksudkan untuk digunakan saat build sudah diperbarui. | |
--help |
-h |
Tampilkan informasi bantuan. |
--verbose |
-v |
Tampilkan output verbose. |
--no-color |
Jangan tambahkan warna pada output. | |
--prefix-output |
Tambahkan awalan pada output dengan level. |
Argumen tambahan apa pun diteruskan ke aplikasi.
dotnet ef database drop
Menghapus database.
Options:
| Option | Short | Description |
|---|---|---|
--force |
-f |
Jangan mengkonfirmasi. |
--dry-run |
Perlihatkan database mana yang akan dihilangkan, tetapi jangan jatuhkan. | |
--connection <CONNECTION> |
string sambungan ke database. Mengatur ke default yang ditentukan dalam AddDbContext atau OnConfiguring. Ditambahkan dalam EF Core 11. |
dotnet ef database update
Memperbarui database ke migrasi terakhir atau ke migrasi tertentu.
Arguments:
| Argument | Description |
|---|---|
<MIGRATION> |
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. |
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
string sambungan ke database. Mengatur ke default yang ditentukan dalam AddDbContext atau OnConfiguring. |
Contoh berikut memperbarui database ke migrasi tertentu. Yang pertama menggunakan nama migrasi dan yang kedua menggunakan ID migrasi dan koneksi tertentu:
dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate --connection your_connection_string
dotnet ef dbcontext info
Mendapatkan informasi tentang jenis DbContext .
dotnet ef dbcontext list
Daftar jenis DbContext yang tersedia.
dotnet ef dbcontext optimize
Menghasilkan versi terkompilasi dari model yang digunakan oleh DbContext dan melakukan prapompilasi kueri.
Lihat Model yang dikompilasi untuk informasi selengkapnya.
Options:
| Option | Short | Description |
|---|---|---|
--output-dir <PATH> |
-o |
Direktori untuk memasukkan file. Jalur relatif terhadap direktori proyek. |
--namespace <NAMESPACE> |
-n |
Namespace yang digunakan untuk semua kelas yang dihasilkan. Pengaturan default dihasilkan dari namespace akar dan directori keluaran ditambah CompiledModels. |
--suffix <SUFFIX> |
Akhiran yang akan ditambahkan ke nama semua file yang dihasilkan. Misalnya .g dapat digunakan untuk menunjukkan bahwa file-file ini berisi kode yang dihasilkan |
|
--no-scaffold |
Jangan membuat model yang dikompilasi. Ini digunakan ketika model yang dikompilasi telah dibuat. | |
--precompile-queries |
Hasilkan kueri yang telah dikommpilasikan sebelumnya. Ini diperlukan untuk kompilasi NativeAOT jika proyek target berisi kueri apa pun | |
--nativeaot |
Hasilkan kode tambahan dalam model yang dikompilasi yang diperlukan untuk kompilasi NativeAOT dan kueri yang telah dikompilasi sebelumnya |
Note
Dukungan NativeAOT dan kueri yang telah dikompilasi dianggap eksperimental di EF 9 dan dapat berubah secara dramatis pada rilis berikutnya.
Contoh berikut menggunakan pengaturan default dan berfungsi jika hanya ada satu DbContext dalam proyek:
dotnet ef dbcontext optimize
Contoh berikut mengoptimalkan model untuk konteks dengan nama yang ditentukan dan menempatkannya di folder dan namespace terpisah:
dotnet ef dbcontext optimize -o Models -n BlogModels -c BlogContext
dotnet ef dbcontext scaffold
Menghasilkan kode untuk DbContext dan jenis entitas untuk database. Agar perintah ini menghasilkan jenis entitas, tabel database harus memiliki kunci primer.
Arguments:
| Argument | Description |
|---|---|
<CONNECTION> |
string sambungan 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. |
<PROVIDER> |
Penyedia yang akan digunakan. Biasanya ini adalah nama paket NuGet, misalnya: Microsoft.EntityFrameworkCore.SqlServer. |
Options:
| Option | Short | Description |
|---|---|---|
--data-annotations |
-d |
Gunakan atribut untuk mengonfigurasi model (jika memungkinkan). Jika opsi ini dihilangkan, hanya API fasih yang digunakan. |
--context <NAME> |
-c |
Nama kelas DbContext yang akan dihasilkan. |
--context-dir <PATH> |
Direktori untuk menempatkan berkas kelas DbContext. Jalur relatif terhadap direktori proyek. Namespace berasal dari nama folder. |
|
--context-namespace <NAMESPACE> |
Namespace yang digunakan untuk kelas yang dihasilkan DbContext . Catatan: mengambil alih --namespace. |
|
--force |
-f |
Timpa file yang sudah ada. |
--output-dir <PATH> |
-o |
Direktori untuk memasukkan file kelas entitas. Jalur relatif terhadap direktori proyek. |
--namespace <NAMESPACE> |
-n |
Namespace yang digunakan untuk semua kelas yang dihasilkan. Setelan Awal mengacu pada namespace akar dan direktori output. |
--schema <SCHEMA_NAME>... |
Skema tabel dan tampilan untuk menghasilkan jenis entitas. Untuk menentukan beberapa skema, ulangi --schema untuk masing-masing skema. Jika opsi 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. |
|
--table <TABLE_NAME>... |
-t |
Tabel dan tampilan untuk menghasilkan jenis entitas. Untuk menentukan beberapa tabel, ulangi -t atau --table untuk masing-masing tabel. Tabel atau tampilan dalam skema tertentu dapat disertakan menggunakan format 'schema.table' atau 'schema.view'. Jika opsi ini dihilangkan, semua tabel dan tampilan disertakan. |
--use-database-names |
Gunakan nama tabel, tampilan, urutan, dan kolom persis seperti yang muncul di database. Jika opsi ini dihilangkan, nama database diubah agar lebih sesuai dengan konvensi gaya nama C#. | |
--no-onconfiguring |
Menahan pembuatan OnConfiguring method pada kelas DbContext yang dihasilkan. |
|
--no-pluralize |
Jangan gunakan pluralizer. |
Contoh berikut mengacak semua skema dan tabel dan menempatkan file baru di folder Model .
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
Contoh perancah berikut ini hanya memilih tabel dan membuat konteks dalam folder terpisah dengan nama dan namespace yang ditentukan:
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext --context-namespace New.Namespace
Contoh berikut membaca string koneksi dari kumpulan konfigurasi proyek menggunakan alat Secret Manager.
dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"
dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer
Contoh berikut melewati perancah OnConfiguring metode. Ini dapat berguna ketika Anda ingin mengonfigurasi DbContext di luar kelas. Misalnya, aplikasi ASP.NET Core biasanya mengonfigurasinya di Startup.ConfigureServices.
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=true;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
Menghasilkan skrip SQL dari DbContext. Melewati migrasi apa pun.
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Berkas untuk menyimpan hasil. |
dotnet ef migrations add
Menambahkan migrasi baru.
Arguments:
| Argument | Description |
|---|---|
<NAME> |
Nama migrasi. |
Options:
| Option | Short | Description |
|---|---|---|
--output-dir <PATH> |
-o |
Direktori yang digunakan untuk keluaran file. Jalur relatif terhadap direktori proyek target. Diset default ke "Migrasi". |
--namespace <NAMESPACE> |
-n |
Namespace yang akan digunakan untuk kelas yang dihasilkan. Secara default diatur dari direktori output. |
dotnet ef migrations bundle
Membuat executable untuk memperbarui database.
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Lokasi berkas yang dapat dieksekusi untuk dibuat. |
--force |
-f |
Timpa file yang sudah ada. |
--self-contained |
Bundel juga runtime .NET sehingga tidak perlu diinstal pada komputer. | |
--target-runtime <RUNTIME_IDENTIFIER> |
-r |
Target runtime yang akan dibundel. |
dotnet ef migrations has-pending-model-changes
Note
Perintah ini ditambahkan dalam EF Core 8.0.
Memeriksa apakah ada perubahan yang telah dilakukan pada model sejak migrasi terakhir.
Options:
dotnet ef migrations list
Daftar migrasi yang tersedia.
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
string sambungan ke database. Menggunakan pengaturan default yang ditentukan dalam AddDbContext atau OnConfiguring. |
--no-connect |
Jangan sambungkan ke database. |
dotnet ef migrations remove
Menghapus migrasi terakhir, mengembalikan perubahan kode yang dilakukan untuk migrasi terbaru.
Options:
| Option | Short | Description |
|---|---|---|
--force |
-f |
Membatalkan migrasi terbaru, mengurungkan perubahan kode dan basis data yang dilakukan untuk migrasi terbaru. Terus mengembalikan hanya perubahan kode jika terjadi kesalahan saat menyambungkan ke database. |
--connection <CONNECTION> |
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. |
Note
Opsi --offline dan --force tidak dapat digunakan bersama-sama, karena --force memerlukan koneksi database untuk memeriksa apakah migrasi telah diterapkan sebelum mengembalikannya.
dotnet ef migrations script
Menghasilkan skrip SQL dari migrasi.
Arguments:
| Argument | Description |
|---|---|
<FROM> |
Memulai migrasi. Migrasi dapat diidentifikasi berdasarkan nama atau berdasarkan ID. Angka 0 adalah kasus khusus yang berarti sebelum migrasi pertama. Berval menjadi 0. |
<TO> |
Migrasi akhir. Diatur ke migrasi terakhir secara otomatis. |
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
File tempat menulis skrip. |
--idempotent |
-i |
Buat skrip yang dapat digunakan pada database di migrasi apa pun. |
--no-transactions |
Jangan membuat pernyataan transaksi SQL. |
Contoh berikut membuat skrip untuk migrasi InitialCreate:
dotnet ef migrations script 0 InitialCreate
Contoh berikut membuat skrip untuk semua migrasi setelah migrasi InitialCreate.
dotnet ef migrations script 20180904195021_InitialCreate