Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire da EF 9, è possibile usare un'attività MSBuild per generare automaticamente il modello compilato e le query precompilate quando il progetto viene compilato o quando viene pubblicato. Questa operazione è destinata principalmente all'uso con la pubblicazione con NativeAOT.
Avviso
Il supporto nativeAOT e l'integrazione di MSBuild sono funzionalità sperimentali e non sono ancora adatte per l'uso in produzione.
Installazione delle attività
Per iniziare, installare il Microsoft. EntityFrameworkCore.Tasks pacchetto NuGet. Ad esempio:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Nota
Ogni progetto che deve essere compilato con file generati deve fare riferimento al pacchetto NuGet, non è transitivo per impostazione predefinita.
Utilizzo delle attività
Se il progetto specifica <PublishAot>true</PublishAot> , per impostazione predefinita l'attività MSBuild genererà un modello compilato e query precompilate durante la pubblicazione. In caso contrario, è possibile impostare le proprietà seguenti per controllare il comportamento di generazione:
| Proprietà MSBuild | Descrizione |
|---|---|
| EFOptimizeContext | Impostare su true per abilitare l'integrazione di MSBuild.
Solo EF Core 9-10; rimosso in EF Core 11. |
| EFScaffoldModelStage | Impostare su publisho buildnone per indicare in quale fase verrà generato il modello compilato. Il valore predefinito è publish. |
| EFPrecompileQueriesStage | Impostare su publish, build o none per indicare in quale fase verranno generate le query precompilate. Il valore predefinito è publish. |
| DbContextName | Classe derivata DbContext da utilizzare. Nome della classe, solo o completo di namespace. Se questa opzione viene omessa, EF Core eseguirà la generazione per tutte le classi di contesto nel progetto. |
| EFTargetNamespace | Spazio dei nomi da usare per tutte le classi generate. Se questa opzione viene omessa, EF Core userà $(RootNamespace). |
| EFOutputDir | Cartella in cui inserire i file generati prima della compilazione del progetto. Se questa opzione viene omessa, EF Core userà $(IntermediateOutputPath). |
| EFNullable | Indica se i tipi di riferimento nullable verranno usati nel codice generato. Se questa opzione viene omessa, EF Core userà $(Nullable). |
Nota
A partire da EF Core 11, la EFOptimizeContext proprietà è stata rimossa. Le EFScaffoldModelStage proprietà e EFPrecompileQueriesStage ora funzionano in modo indipendente e non richiedono un flag di abilitazione aggiuntivo.
Limiti
- Quando si usa l'integrazione durante la fase di
publishimpostare anche il rid nel progetto di avvio , ad esempio <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Non è possibile specificare un progetto di avvio diverso quando si usa questo approccio perché introduce una dipendenza di compilazione inversa. Ciò significa che il progetto del contesto deve essere autosufficiente in termini di configurazione, quindi se l'app normalmente configura il contesto usando un host builder in un progetto diverso, dovresti implementare IDesignTimeDbContextFactory<TContext> nel progetto del contesto.
- Poiché il progetto deve essere compilato prima che venga generato il modello compilato, questo approccio non supporta le implementazioni parziali del metodo per la personalizzazione del modello compilato.
- Attualmente, questo genererà sempre codice aggiuntivo nel modello compilato necessario per NativeAOT. Se non si prevede di abilitare NativeAOT, generare il modello compilato usando gli strumenti della riga di comando.