Entity Framework Core MSBuild-integrering
Från och med EF 9 kan du använda en MSBuild-uppgift för att generera den kompilerade modellen och förkompilerade frågor automatiskt, antingen när projektet skapas eller när det publiceras. Detta är främst avsett att användas med NativeAOT-publicering.
Varning
NativeAOT-stöd och MSBuild-integrering är experimentella funktioner och passar ännu inte för produktionsanvändning.
Installera uppgifterna
Kom igång genom att installera Microsoft.EntityFrameworkCore.Tasks NuGet-paketet. Till exempel:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Obs
Varje projekt som måste kompileras med genererade filer ska referera till NuGet-paketet. Det är inte transitivt som standard.
Användning av uppgifterna
Om projektet anger <PublishAot>true</PublishAot>
genererar MSBuild-aktiviteten som standard en kompilerad modell och förkompilerade frågor under publiceringen. Annars kan du ange följande egenskaper för att styra generationsbeteendet:
MSBuild-egenskap | Beskrivning |
---|---|
EFOptimizeContext | Ange till true för att aktivera MSBuild-integrering. |
EFScaffoldModelStage | Ange till publish , build eller none för att ange i vilket skede den kompilerade modellen ska genereras. Standardvärdet är publish . |
EFPrecompileQueriesStage | Ange till publish , build eller none för att ange i vilket skede de förkompilerade frågorna ska genereras. Standardvärdet är publish . |
DbContextName | Den härledda DbContext klass som ska användas. Endast klassnamn eller fullständigt kvalificerat med namespaces. Om det här alternativet utelämnas utför EF Core generering för alla kontextklasser i projektet. |
EFTargetNamespace | Namnområdet som ska användas för alla genererade klasser. Om det här alternativet utelämnas använder EF Core $(RootNamespace) . |
EFOutputDir | Mappen som ska placera de genererade filerna innan projektet kompileras. Om det här alternativet utelämnas använder EF Core $(IntermediateOutputPath) . |
EFNullable | Om nullbara referenstyper ska användas i den genererade koden. Om det här alternativet utelämnas använder EF Core $(Nullable) . |
Begränsningar
- När du använder integreringen under
publish
-fasen anger du även rid i startprojektet (t.ex. <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Det går inte att ange ett annat startprojekt när du använder den här metoden eftersom det skulle införa ett omvänt byggeberoende. Det innebär att kontextprojektet måste vara autosuficient när det gäller konfiguration, så om appen normalt konfigurerar kontexten med hjälp av en värdbyggare i ett annat projekt måste du implementera IDesignTimeDbContextFactory<TContext-> i kontextprojektet.
- Eftersom projektet måste vara kompilerbart innan den kompilerade modellen genereras stöder den här metoden inte partiella metodimplementeringar för anpassning av den kompilerade modellen.
- För närvarande genererar detta alltid ytterligare kod i den kompilerade modellen som krävs för NativeAOT. Om du inte planerar att aktivera NativeAOT genererar den kompilerade modellen med hjälp av CLI-verktygen.