Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Od EF 9 můžete pomocí úlohy MSBuild vygenerovat kompilovaný model a předkompilované dotazy automaticky buď při sestavení projektu, nebo při publikování. To je určeno především k použití při publikování pomocí NativeAOT.
Varování
Nativní podpora AOT a integrace nástroje MSBuild jsou experimentální funkce a ještě nejsou vhodné pro produkční použití.
Instalace úloh
Začněte instalací Microsoft. EntityFrameworkCore.Tasks balíček NuGet. Příklad:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Poznámka:
Každý projekt, který je potřeba zkompilovat pomocí vygenerovaných souborů, by měl odkazovat na balíček NuGet, ve výchozím nastavení není tranzitivní.
Použití úkolů
Pokud projekt určí <PublishAot>true</PublishAot> , úloha MSBuild ve výchozím nastavení vygeneruje zkompilovaný model a předkompilované dotazy během publikování. V opačném případě můžete nastavit následující vlastnosti pro řízení chování generování:
| Vlastnost MSBuild | Popis |
|---|---|
| EFOptimizeContext | Nastavte na true k povolení integrace nástroje MSBuild.
Pouze EF Core 9-10; odebráno v EF Core 11. |
| EFScaffoldModelStage | Nastavte na publish, build nebo none aby se určilo, ve které fázi bude zkompilovaný model vygenerován. Výchozí hodnota je publish. |
| EFPrecompileQueriesStage | Nastavte na publish, build nebo none určete, ve které fázi se budou generovat předkompilované dotazy. Výchozí hodnota je publish. |
| DbContextName | Odvozená DbContext třída, která se má použít. Název třídy pouze nebo plně kvalifikovaný pomocí názvových prostorů. Pokud tuto možnost vynecháte, EF Core provede generování pro všechny třídy kontextu v projektu. |
| EFTargetNamespace | Obor názvů, který se má použít pro všechny generované třídy. Pokud tuto možnost vynecháte, ef Core použije $(RootNamespace). |
| EFOutputDir | Složka pro vložení vygenerovaných souborů před kompilací projektu. Pokud tuto možnost vynecháte, ef Core použije $(IntermediateOutputPath). |
| EFNullable | Určuje, zda budou ve vygenerovaném kódu použity referenční typy, které mohou mít hodnotu null. Pokud tuto možnost vynecháte, ef Core použije $(Nullable). |
Poznámka:
Od EF Core 11 EFOptimizeContext se tato vlastnost odebrala.
EFScaffoldModelStage Vlastnosti EFPrecompileQueriesStage teď fungují nezávisle a nevyžadují další příznak povolení.
Omezení
- Při použití integrace během fáze
publishtaké nastavte rid ve spouštěcím projektu (např. <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Při použití tohoto přístupu nelze zadat jiný spouštěcí projekt, protože by zavedl inverzní závislost sestavení. To znamená, že kontextový projekt musí být z hlediska konfigurace soběstačný, takže pokud vaše aplikace obvykle konfiguruje kontext pomocí tvůrce hostitelů v jiném projektu, musíte v kontextovém projektu implementovat IDesignTimeDbContextFactory<TContext>.
- Vzhledem k tomu, že projekt musí být kompilovatelný před vygenerovaným kompilovaným modelem, tento přístup nepodporuje částečné implementace metod pro přizpůsobení zkompilovaného modelu.
- V současné době se vždy vygeneruje další kód v zkompilovaném modelu, který se vyžaduje pro NativeAOT. Pokud neplánujete povolit NativeAOT, vygenerujte kompilovaný model pomocí nástrojů rozhraní příkazového řádku.