Como portar um modelo baseado em EF6 EDMX para o EF Core
O EF Core não dá suporte ao formato de arquivo EDMX para modelos. A melhor opção para portar esses modelos é gerar um novo modelo baseado em código do banco de dados para seu aplicativo.
Instalar pacotes NuGet do EF Core
Instale o pacote do NuGet Microsoft.EntityFrameworkCore.Tools
.
Regenerar o modelo.
Agora você pode usar a funcionalidade de engenheiro reverso para criar um modelo com base em seu banco de dados existente.
Execute o seguinte comando no Console do Gerenciador de Pacotes (Ferramentas -> Gerenciador de Pacotes NuGet -> Console do Gerenciador de Pacotes). Consulte o Console do Gerenciador de Pacotes (Visual Studio) para obter opções de comando para estruturar um subconjunto de tabelas etc.
Scaffold-DbContext "<connection string>" <database provider name>
Por exemplo, aqui está o comando para estruturar um modelo do banco de dados da atividade de blog em sua instância LocalDB do SQL Server.
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer
Remover o modelo EF6
Agora você removeria o modelo EF6 do aplicativo.
É bom deixar o pacote NuGet EF6 (EntityFramework) instalado, pois o EF Core e o EF6 podem ser usados lado a lado no mesmo aplicativo. No entanto, se você não pretende usar o EF6 em nenhuma área do aplicativo, desinstalar o pacote ajudará a concentrar erros do compilador em partes de código que precisam de atenção.
Atualizar o código
Nesse ponto, é uma questão de abordar erros de compilação e revisar o código para ver se as alterações de comportamento entre o EF6 e o EF Core afetarão você.
Testar a porta
Só porque seu aplicativo é compilado, não significa que ele seja portado com êxito para o EF Core. Você precisará testar todas as áreas do aplicativo para garantir que nenhuma das alterações de comportamento tenha afetado negativamente seu aplicativo.
Outras considerações
O EF Core não dá suporte ao provedor EntityClient
e, portanto, todas as consultas do EntitySQL devem ser migradas para LINQ ou FromRawSql
.
Além disso, não há suporte para cadeias de conexão EntityClient.
Para obter mais considerações, leia o guia completo sobre as diferenças entre o EF6 e o EF Core.