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.