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.
Dimulai dengan EF 9, Anda dapat menggunakan tugas MSBuild untuk menghasilkan model yang dikompilasi dan kueri yang telah dikompilasi secara otomatis baik saat proyek dibangun atau saat diterbitkan. Ini terutama dimaksudkan untuk digunakan dengan penerbitan NativeAOT.
Peringatan
Dukungan NativeAOT dan integrasi MSBuild adalah fitur eksperimental, dan belum cocok untuk penggunaan produksi.
Menginstal tugas
Untuk memulai, instal Microsoft. EntityFrameworkCore.Tasks paket NuGet. Contoh:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Catatan
Setiap proyek yang perlu dikompilasi dengan file yang dihasilkan harus mereferensikan paket NuGet, itu tidak transitif secara default.
Menggunakan tugas
Jika proyek menentukan <PublishAot>true</PublishAot> maka secara default tugas MSBuild akan menghasilkan model yang dikompilasi dan kueri yang telah dikompilasi selama penerbitan. Jika tidak, Anda dapat mengatur properti berikut untuk mengontrol perilaku pembuatan:
| Properti MSBuild | Deskripsi |
|---|---|
| EFOptimizeContext | Atur ke true untuk mengaktifkan integrasi MSBuild.
Hanya EF Core 9-10; dihapus dalam EF Core 11. |
| EFScaffoldModelStage | Atur ke publish, build atau none untuk menunjukkan pada tahap mana model yang dikompilasi akan dihasilkan. Default diatur ke publish. |
| EFPrecompileQueriesStage | Atur ke publish, build atau none untuk menunjukkan pada tahap mana kueri yang telah dikommpilasi akan dihasilkan. Default diatur ke publish. |
| DbContextName | Kelas turunan DbContext yang akan digunakan. Nama kelas saja atau dengan namespace yang sepenuhnya memenuhi syarat. Jika opsi ini dihilangkan, EF Core akan melakukan pembuatan untuk semua kelas konteks dalam proyek. |
| EFTargetNamespace | Namespace yang digunakan untuk semua kelas yang dihasilkan. Jika opsi ini dihilangkan, EF Core akan menggunakan $(RootNamespace). |
| EFOutputDir | Folder untuk meletakkan file yang dihasilkan sebelum proyek dikompilasi. Jika opsi ini dihilangkan, EF Core akan menggunakan $(IntermediateOutputPath). |
| EFNullable | Apakah jenis referensi nullable akan digunakan dalam kode yang dihasilkan. Jika opsi ini dihilangkan, EF Core akan menggunakan $(Nullable). |
Catatan
Dimulai dengan EF Core 11, EFOptimizeContext properti telah dihapus. Properti EFScaffoldModelStage dan EFPrecompileQueriesStage sekarang bekerja secara independen dan tidak memerlukan bendera pengaktifan tambahan.
Batasan
- Saat menggunakan integrasi selama tahap
publish, pastikan juga mengatur rid dalam proyek startup (misalnya <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Proyek startup yang berbeda tidak dapat ditentukan saat menggunakan pendekatan ini karena akan memperkenalkan dependensi build terbalik. Ini berarti bahwa proyek konteks harus otomatis dalam hal konfigurasi, jadi jika aplikasi Anda biasanya mengonfigurasi konteks menggunakan pembangun host dalam proyek yang berbeda, Anda harus menerapkan IDesignTimeDbContextFactory<TContext> dalam proyek konteks.
- Karena proyek harus dapat dikompilasi sebelum model yang dikompilasi dihasilkan, pendekatan ini tidak mendukung implementasi metode parsial untuk penyesuaian model yang dikompilasi.
- Saat ini, ini akan selalu menghasilkan kode tambahan dalam model yang dikompilasi yang diperlukan untuk NativeAOT. Jika Anda tidak berencana untuk mengaktifkan NativeAOT, buat model yang dikompilasi menggunakan alat CLI.