Tasarım zamanı hizmetleri
Araçlar tarafından kullanılan bazı hizmetler yalnızca tasarım zamanında kullanılır. Bu hizmetler, EF Core çalışma zamanı hizmetlerinden ayrı olarak yönetilir ve bu uygulamaların uygulamanızla dağıtılmasını önler. Bu hizmetlerden birini geçersiz kılmak için (örneğin, geçiş dosyaları oluşturma hizmeti), başlangıç projenize bir uygulamasını ekleyin IDesignTimeServices .
internal class MyDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection services)
=> services.AddSingleton<IMigrationsCodeGenerator, MyMigrationsCodeGenerator>();
}
Microsoft.EntityFrameworkCore.Design 'ye başvurma
Microsoft.EntityFrameworkCore.Design, bir DevelopmentDependency paketidir. Bu, bağımlılığın diğer projelere geçişli olarak akamayacağı ve varsayılan olarak kendi türlerine başvurmayacağı anlamına gelir.
Türlerine başvurmak ve tasarım zamanı hizmetlerini geçersiz kılmak için, proje dosyanızdaki PackageReference öğesinin meta verilerini güncelleştirin.
<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>
Pakete Microsoft. EntityFrameworkCore. Tools üzerinden geçişli olarak başvuruluyorsa, pakete açık bir PackageReference eklemeniz ve meta verilerini değiştirmeniz gerekir.
Hizmetler listesi
Tasarım zamanı hizmetlerinin bir listesi aşağıda verilmiştir.
| Hizmet | Açıklama |
|---|---|
| Iannotationcodegenerator | Karşılık gelen model ek açıklamaları için kod üretir. |
| Isharphelper | C# kodu oluşturmaya yardımcı olur. |
| IPluralizer | Çoğullarurun ve sözcükleri gösterir. |
| Imıgrationscodegenerator | Bir geçiş için kod üretir. |
| Imigrationsscaffolder | Geçiş dosyalarını yönetmeye yönelik ana sınıf. |
| Idatabasemodelfactory | Veritabanından bir veritabanı modeli oluşturur. |
| Imodelcodegenerator | Bir model için kod üretir. |
| Iproviderconfigurationcodegenerator | Onyapılandırıyor kodu oluşturur. |
| Isuengineerscaffolder | Ters mühendislik uygulanan modellerin yapı iskelesi için ana sınıf. |
| Icaffoldingmodelfactory | Veritabanı modelinden bir model oluşturur. EF Core 6,0 ' ye eklenmiştir. |
Hizmetleri kullanma
Bu hizmetler kendi araçlarınızı oluşturmak için de yararlı olabilir. Örneğin, tasarım zamanı iş akışınızın bir kısmını otomatik hale getirmek istediğinizde.
AddEntityFrameworkDesignTimeServices ve AddDbContextDesignTimeServices uzantı yöntemlerini kullanarak bu hizmetleri içeren bir hizmet sağlayıcı oluşturabilirsiniz.
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);