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.
Se você estiver usando o banco de dados como a fonte da verdade, a atualização envolverá principalmente o endereçamento de alterações na forma de entidades geradas. As etapas para migrar incluem:
- Escolha um ponto no tempo para modelar o banco de dados.
- Verifique se os projetos EF6 estão atualizados e em sincronia com o banco de dados.
- Crie o projeto do EF Core.
- Use as ferramentas de suporte para fazer engenharia reversa do banco de dados para gerar código.
- Valide se as classes geradas pelo EF Core são compatíveis com seu código.
- Para exceções, modifique as classes geradas e atualize a configuração do modelo ou adapte seu código ao modelo.
Observe que, embora o EF Core atualmente gere a estrutura necessária para gerar com êxito uma cópia do banco de dados, grande parte do código não é necessário para a abordagem "database-first". Uma correção para isso é acompanhada em Problema nº 10890. As coisas que você pode ignorar com segurança, conforme não necessário, incluem: sequências, nomes de restrição, índices não exclusivos e filtros de índice.
Manipulando alterações de esquema
Quando o banco de dados é a fonte da verdade, o EF Core extrai as informações do esquema do banco de dados, em vez de aplicá-las por meio de migrações. O fluxo de trabalho típico é executar novamente a etapa de engenharia reversa sempre que o esquema de banco de dados for alterado. Um conjunto de testes abrangente é valioso para essa abordagem porque você pode automatizar o processo de estruturação e verificar as alterações executando os testes.
Dicas para lidar com diferenças de modelo
Por vários motivos, talvez você queira que seu modelo de domínio C# seja moldado de forma diferente daquela gerada na engenharia reversa. Em muitos casos, isso significa atualizar manualmente o código gerado automaticamente após cada alteração de esquema. Uma maneira de evitar esforço extra quando o código é regenerado é usar classes parciais para seu DbContext e entidades relacionadas. Em seguida, você pode manter o código relacionado à lógica de negócios e às propriedades não monitoradas no banco de dados em um conjunto separado de arquivos de classe que não serão sobrescritos.
Se o modelo for significativamente diferente do gerado, mas não mudar com frequência, uma opção a ser considerada é o uso do padrão de repositório como um adaptador. O repositório pode consumir as classes geradas pelo EF Core e publicar as classes personalizadas que você usa. Isso pode reduzir o impacto das alterações isolando-as no código do repositório, em vez de ter que executar uma refatoração em todo o aplicativo sempre que o esquema for alterado.
Talvez você queira considerar um fluxo de trabalho alternativo e seguir etapas semelhantes à abordagem híbrida. Em vez de gerar um novo conjunto de classes a cada vez, você indica tabelas específicas para gerar apenas novas classes. Você mantém as classes existentes "como estão" e adiciona ou remove diretamente as propriedades que foram alteradas. Em seguida, você atualiza a configuração do modelo para resolver quaisquer alterações na forma como o banco de dados é mapeado para suas classes existentes.
Personalizar a geração de código
Atualmente, o EF Core 6 não dá suporte à personalização do código gerado. Há soluções de terceiros, como o EF Core Power Tools , que estão disponíveis. Para obter uma lista de ferramentas e extensões da comunidade em destaque, consulte: Ferramentas e Extensões do EF Core.
Por fim, examine a lista detalhada de diferenças entre o EF6 e o EF Core para resolver quaisquer problemas restantes com a portabilidade.