Layanan waktu desain
Beberapa layanan yang digunakan oleh alat hanya digunakan pada waktu desain. Layanan ini dikelola secara terpisah dari layanan runtime EF Core untuk mencegah layanan tersebut disebarkan dengan aplikasi Anda. Untuk mengambil alih salah satu layanan ini (misalnya layanan untuk menghasilkan file migrasi), tambahkan implementasi IDesignTimeServices
ke proyek startup Anda.
internal class MyDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection services)
=> services.AddSingleton<IMigrationsCodeGenerator, MyMigrationsCodeGenerator>();
}
Mereferensikan Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Design adalah paket DevelopmentDependency. Ini berarti bahwa dependensi tidak akan mengalir secara transitif ke proyek lain, dan Anda tidak dapat, secara default, mereferensikan jenisnya.
Untuk mereferensikan jenisnya dan menimpa layanan waktu desain, perbarui metadata item PackageReference dalam file proyek Anda.
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.9">
<PrivateAssets>all</PrivateAssets>
<!-- Remove IncludeAssets to allow compiling against the assembly -->
<!--<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>-->
</PackageReference>
Jika paket direferensikan secara transitif melalui Microsoft.EntityFrameworkCore.Tools, Anda harus menambahkan PackageReference eksplisit ke paket dan mengubah metadatanya.
Daftar layanan
Berikut ini adalah daftar layanan waktu desain.
Layanan | Deskripsi |
---|---|
IAnnotationCodeGenerator | Menghasilkan kode untuk anotasi model yang sesuai. |
ICSharpHelper | Membantu menghasilkan kode C#. |
IPluralizer | Pluralisasi dan mensingkularisasi kata- kata. |
IMigrationsCodeGenerator | Menghasilkan kode untuk migrasi. |
IMigrationsScaffolder | Kelas utama untuk mengelola file migrasi. |
IDatabaseModelFactory | Membuat model database dari database. |
IModelCodeGenerator | Menghasilkan kode untuk model. |
IProviderConfigurationCodeGenerator | Menghasilkan kode OnConfiguring. |
IReverseEngineerScaffolder | Kelas utama untuk perancah model rekayasa terbalik. |
IScaffoldingModelFactory | Membuat model dari model database. |
Menggunakan layanan
Layanan ini juga dapat berguna untuk membuat alat Anda sendiri. Misalnya, saat Anda ingin mengotomatiskan bagian dari alur kerja waktu desain Anda.
Anda dapat membangun penyedia layanan yang berisi layanan ini menggunakan metode ekstensi AddEntityFrameworkDesignTimeServices dan AddDbContextDesignTimeServices.
var db = new MyDbContext();
// Create design-time services
var serviceCollection = new ServiceCollection();
serviceCollection.AddEntityFrameworkDesignTimeServices();
serviceCollection.AddDbContextDesignTimeServices(db);
var serviceProvider = serviceCollection.BuildServiceProvider();
// Add a migration
var migrationsScaffolder = serviceProvider.GetService<IMigrationsScaffolder>();
var migration = migrationsScaffolder.ScaffoldMigration(migrationName, rootNamespace);
migrationsScaffolder.Save(projectDir, migration, outputDir);
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk