Dela via


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.

Ytterligare resurser