.NET Core - Database First e Scaffolding com MySql


 Neste artigo vamos recordar como gerar as classes do modelo de domínio e do contexto usando a abordagem DatabaseFirst e fazendo o Scaffold de banco de dados MySQL usando a NET CLI.

Neste artigo eu vou usar o .NET Core e a ferramenta de linha de comando CLI, o Entity Framework Core e o Visual Studio Code para gerar as classes do modelo de domínio e do contexto para um banco de dados MySql.

Vou usar a versão 2.1 do .NET Core SDK e do Entity Framework Core e nesta versão os comandos dotnet-ef agora fazem parte do SDK do .NET Core, portanto, não será mais necessário usar DotNetCliToolReference no projeto para usar migrações ou para fazer o scaffold de um DbContext de um banco de dados existente.

Para habilitar os comandos você precisa instalar apenas o pacote Microsoft.EntityFrameworkCore.Design no projeto.

A título de exemplo vamos fazer o scaffolding de um banco de dados livraria existente no MySql e da tabela livros que possui os seguintes campos: Id, Autor, Lancamento, Nome e Preco

Abaixo vemos o banco de dados e a tabela exibidos no WorkBench:

Então ao trabalho...

Recursos usados:

Criando o projeto console

Abra uma janela de comandos (cmd) e crie uma pasta na sua máquina local onde deseja criar o projeto.

No exemplo deste artigo eu crie a pasta c:\_aspncore_jan_2019 e dentro desta pasta criei a pasta DemoScaffold, onde vou criar o projeto, e a seguir entrei nesta pasta:

Agora para criar o projeto console digite o comando: dotnet new console

 

Nosso projeto console foi criado com o mesmo nome da pasta. Agora vamos incluir o pacote para acessar o MySql via Entity FrameworkCore.

Digite o comando : dotnet add package Pomelo.EntityFrameworkCore.MySql --version 2.1

A seguir vamos instalar o pacote para habilitar os comandos de scaffolding via Net CLI.

Digite o comando:   dotnet add package Microsoft.EntityFrameworkCore.Design

Agora crie a pasta Models no projeto console. A estrutura do projeto deve ficar assim:

Gerando as classes do modelo de domínio e do contexto

O comando usado para gerar o modelo de entidades a partir do banco de dados é  :

dotnet ef dbcontext scaffold <string de conexão>  Provider -o Models -f -c DemoDbContext

Onde :

dotnet ef dbcontext - comando
<string de conexão> - a string de conexão do banco de dados usado
Provider - 
o provedor do banco de dados
-o Models -
a pasta de sáida das classes geradas
-f - s
obrescreve um código anteriormente gerado
-c DemoDbContext -
o nome do DbContext usado na aplicação

Então para o banco de dados Livraria cuja string de conexão é :

Server=localhost;DataBase=Livraria;Uid=root;Pwd=gpxpst

Temos o seguinte comando:

dotnet ef dbcontext scaffold "Server=localhost;DataBase=Livraria;Uid=root;Pwd=gpxpst"  Pomelo.EntityFrameworkCore.MySql -o Models -f -c DemoDbContext 

Pronto.
Abrindo o projeto no VS Code teremos na pasta Models:

Abaixo o código da classe de domínio : Livros.cs

O código gerado para a classe de contexto :  DemoDbContext.cs



Se você não conseguiu obter esse resultado verificar as versões usadas pois a maioria dos desenvolvedores enfrenta problemas no scaffolding devido ao conflito de versões.

Tenha em mente que, se você estiver usando o .Net Core 2.1 , deve usar a mesma versão para o provedor Pomelo caso contrário vai ter problemas.

Agora você pode usar as classes geradas para acessar os dados e realizar o CRUD.

Para obter o mesmo resultado para os demais banco de dados basta usar o provedor recomendado e definir a string de conexão correta.

"E, quanto fizerdes por palavras ou por obras, fazei tudo em nome do Senhor Jesus, dando por ele graças a Deus Pai."
Colossenses 3:17

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti