Referensi alat Entity Framework Core - .NET Core CLI
Alat antarmuka baris perintah (CLI) 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 adalah ekstensi untuk perintah dotnet lintas platform, yang merupakan bagian dari .NET Core SDK. Alat-alat ini berfungsi dengan proyek .NET Core.
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 dapat menggunakan alat pada proyek tertentu, Anda harus menambahkan paket ke Microsoft.EntityFrameworkCore.Design
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 .--project
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 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 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 CLI bekerja dengan proyek .NET Core dan proyek .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 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. 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.
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
Pilihan | Pendek | Deskripsi |
---|---|---|
--json |
Tampilkan output JSON. | |
--context <DBCONTEXT> |
-c |
Kelas yang DbContext akan digunakan. Nama kelas saja atau sepenuhnya memenuhi syarat dengan namespace layanan. 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 kerja 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 runtime target 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 mewarnai output. | |
--prefix-output |
Output awalan dengan tingkat. |
Argumen tambahan apa pun diteruskan ke aplikasi.
dotnet ef database drop
Menghapus database.
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--force |
-f |
Jangan mengkonfirmasi. |
--dry-run |
Perlihatkan database mana yang akan dihilangkan, tetapi jangan jatuhkan. |
dotnet ef database update
Memperbarui database ke migrasi terakhir atau ke migrasi tertentu.
Argumen:
Argumen | Deskripsi |
---|---|
<MIGRATION> |
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. |
Opsi:
Pilihan | Deskripsi |
---|---|
--connection <CONNECTION> |
string koneksi ke database. Default ke 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
Mencantumkan jenis yang tersedia DbContext
.
dotnet ef dbcontext optimize
Menghasilkan versi model yang dikompilasi yang digunakan oleh DbContext
.
Lihat Model yang dikompilasi untuk informasi selengkapnya.
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--output-dir <PATH> |
-o |
Direktori untuk memasukkan file. Jalur relatif terhadap direktori proyek. |
--namespace <NAMESPACE> |
-n |
Namespace layanan yang digunakan untuk semua kelas yang dihasilkan. Default yang dihasilkan dari namespace layanan akar dan direktori output ditambah CompiledModels . |
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
jenis entitas dan untuk database. Agar perintah ini menghasilkan jenis entitas, tabel database harus memiliki kunci primer.
Argumen:
Argumen | Deskripsi |
---|---|
<CONNECTION> |
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. |
<PROVIDER> |
Penyedia yang akan digunakan. Biasanya ini adalah nama paket NuGet, misalnya: Microsoft.EntityFrameworkCore.SqlServer . |
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--data-annotations |
-d |
Gunakan atribut untuk mengonfigurasi model (jika memungkinkan). Jika opsi ini dihilangkan, hanya API fasih yang digunakan. |
--context <NAME> |
-c |
Nama kelas yang DbContext akan dihasilkan. |
--context-dir <PATH> |
Direktori untuk memasukkan DbContext file kelas. 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 ada. |
--output-dir <PATH> |
-o |
Direktori untuk memasukkan file kelas entitas. Jalur relatif terhadap direktori proyek. |
--namespace <NAMESPACE> |
-n |
Namespace layanan yang digunakan untuk semua kelas yang dihasilkan. Default yang dihasilkan dari namespace layanan 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 |
Menekan pembuatan OnConfiguring metode di kelas yang dihasilkan DbContext . |
|
--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;User Id=myUsername;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
Menghasilkan skrip SQL dari DbContext. Melewati migrasi apa pun.
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--output <FILE> |
-o |
File untuk menulis hasilnya. |
dotnet ef migrations add
Menambahkan migrasi baru.
Argumen:
Argumen | Deskripsi |
---|---|
<NAME> |
Nama migrasi. |
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--output-dir <PATH> |
-o |
Direktori menggunakan untuk menghasilkan file. Jalur relatif terhadap direktori proyek target. Default ke "Migrasi". |
--namespace <NAMESPACE> |
-n |
Namespace yang akan digunakan untuk kelas yang dihasilkan. Default yang dihasilkan dari direktori output. |
dotnet ef migrations bundle
Membuat executable untuk memperbarui database.
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--output <FILE> |
-o |
Jalur file yang dapat dieksekusi untuk dibuat. |
--force |
-f |
Timpa file yang ada. |
--self-contained |
Bundel juga runtime .NET sehingga tidak perlu diinstal pada komputer. | |
--target-runtime <RUNTIME_IDENTIFIER> |
-r |
Runtime target yang akan dibundel. |
dotnet ef migrations has-pending-model-changes
Catatan
Perintah ini ditambahkan dalam EF Core 8.0.
Memeriksa apakah ada perubahan yang telah dilakukan pada model sejak migrasi terakhir.
Opsi:
dotnet ef migrations list
Mencantumkan migrasi yang tersedia.
Opsi:
Pilihan | Deskripsi |
---|---|
--connection <CONNECTION> |
string koneksi ke database. Default ke 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.
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--force |
-f |
Mengembalikan migrasi terbaru, mengembalikan perubahan kode dan database yang dilakukan untuk migrasi terbaru. Terus mengembalikan hanya perubahan kode jika terjadi kesalahan saat menyambungkan ke database. |
dotnet ef migrations script
Menghasilkan skrip SQL dari migrasi.
Argumen:
Argumen | Deskripsi |
---|---|
<FROM> |
Migrasi awal. Migrasi dapat diidentifikasi berdasarkan nama atau berdasarkan ID. Angka 0 adalah kasus khusus yang berarti sebelum migrasi pertama. Default ke 0. |
<TO> |
Migrasi akhir. Default ke migrasi terakhir. |
Opsi:
Pilihan | Pendek | Deskripsi |
---|---|---|
--output <FILE> |
-o |
File untuk 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