Služby v době návrhu
Některé služby používané nástroji se používají pouze v době návrhu. Tyto služby se spravují odděleně od služeb modulu runtime EF Core, aby se zabránilo jejich nasazení s vaší aplikací. Pokud chcete přepsat jednu z těchto služeb (například službu pro generování souborů migrace), přidejte do projektu po spuštění implementaci IDesignTimeServices
.
internal class MyDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection services)
=> services.AddSingleton<IMigrationsCodeGenerator, MyMigrationsCodeGenerator>();
}
Odkazování na Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Design je balíček DevelopmentDependency. To znamená, že závislost nebude přechodně přetékat do jiných projektů a ve výchozím nastavení nebude možné odkazovat na její typy.
Pokud chcete odkazovat na jeho typy a přepsat služby v době návrhu, aktualizujte metadata položky PackageReference v souboru projektu.
<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>
Pokud se na balíček odkazuje tranzitivně prostřednictvím Microsoft.EntityFrameworkCore.Tools, budete muset do balíčku přidat explicitní PackageReference a změnit jeho metadata.
Seznam služeb
Následuje seznam služeb v době návrhu.
Služba | Popis |
---|---|
IAnnotationCodeGenerator | Vygeneruje kód pro odpovídající poznámky modelu. |
ICSharpHelper | Pomáhá generovat kód jazyka C#. |
IPluralizer | V množném čísle se slova vyčíslí a singalizuje. |
IMigrationsCodeGenerator | Generuje kód pro migraci. |
IMigrationsScaffolder | Hlavní třída pro správu souborů migrace. |
IDatabaseModelFactory | Vytvoří databázový model z databáze. |
IModelCodeGenerator | Vygeneruje kód pro model. |
IProviderConfigurationCodeGenerator | Generuje kód OnConfiguring. |
IReverseEngineerScaffolder | Hlavní třída pro generování zpětnou analýzu modelů. |
IScaffoldingModelFactory | Vytvoří model z databázového modelu. |
Používání služeb
Tyto služby můžou být užitečné také při vytváření vlastních nástrojů. Pokud například chcete automatizovat část pracovního postupu návrhu.
Pomocí rozšiřujících metod AddEntityFrameworkDesignTimeServices a AddDbContextDesignTimeServices můžete vytvořit zprostředkovatele služeb obsahující tyto služby.
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);