Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do EF 9, você pode usar uma tarefa do MSBuild para gerar o modelo compilado e as consultas pré-compiladas automaticamente quando o projeto é criado ou publicado. Isso deve ser usado principalmente com a publicação NativeAOT.
Aviso
O suporte ao NativeAOT e a integração do MSBuild são recursos experimentais e ainda não são adequados para uso em produção.
Instalando as tarefas
Para começar, instale o Microsoft. EntityFrameworkCore.Tasks pacote NuGet. Por exemplo:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Observação
Cada projeto que precisa ser compilado com arquivos gerados deve fazer referência ao pacote NuGet, ele não é transitivo por padrão.
Usando as tarefas
Se o projeto especificar <PublishAot>true</PublishAot> , por padrão, a tarefa do MSBuild gerará um modelo compilado e consultas pré-compiladas durante a publicação. Caso contrário, você pode definir as seguintes propriedades para controlar o comportamento de geração:
| Propriedade do MSBuild | Descrição |
|---|---|
| EFOptimizeContext | Defina como true para habilitar a integração com o MSBuild.
EF Core 9-10 somente — removido no EF Core 11. |
| EFScaffoldModelStage | Defina como publishou buildnone para indicar em qual estágio o modelo compilado será gerado. O padrão é publish. |
| EFPrecompileQueriesStage | Defina como publishou buildnone para indicar em qual estágio as consultas pré-compiladas serão geradas. O padrão é publish. |
| DbContextName | A classe derivada DbContext a ser usada. Somente nome de classe ou qualificado por inteiro com os namespaces. Se essa opção for omitida, o EF Core executará a geração para todas as classes de contexto no projeto. |
| EFTargetNamespace | O namespace que será utilizado em todas as classes geradas. Se essa opção for omitida, o EF Core usará $(RootNamespace). |
| EFOutputDir | A pasta para colocar os arquivos gerados antes que o projeto seja compilado. Se essa opção for omitida, o EF Core usará $(IntermediateOutputPath). |
| EFNullable | Se os tipos de referência anuláveis serão usados no código gerado. Se essa opção for omitida, o EF Core usará $(Nullable). |
Observação
A partir do EF Core 11, a EFOptimizeContext propriedade foi removida. As propriedades EFScaffoldModelStage e EFPrecompileQueriesStage agora funcionam de forma independente e não requerem mais um sinalizador de habilitação adicional.
Limitações
- Ao usar a integração durante o estágio
publish, também defina o rid no projeto de inicialização (como, por exemplo, <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Um projeto de inicialização diferente não pode ser especificado ao usar essa abordagem, pois introduziria uma dependência de build inversa. Isso significa que o projeto de contexto precisa ser autossuficiente em termos de configuração, portanto, se seu aplicativo normalmente configura o contexto usando um construtor de host em um projeto diferente, você precisará implementar IDesignTimeDbContextFactory<TContext> no projeto de contexto.
- Como o projeto precisa ser compilável antes que o modelo compilado seja gerado, essa abordagem não dá suporte a implementações parciais de método para personalização do modelo compilado.
- Atualmente, isso sempre gerará código adicional no modelo compilado necessário para o NativeAOT. Se você não estiver planejando habilitar o NativeAOT, gere o modelo compilado usando as ferramentas da CLI.