.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 - sobrescreve 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:
A classe de contexto DemoDbContext.cs
A classe de domínio Livros.cs
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core - Macoratti
Conceitos - .NET Framework versus .NET Core - Macoratti
ASP .NET Core - Conceitos Básicos - Macoratti.net
ASP .NET Core MVC - CRUD básico com ADO .NET - Macoratti
ASP .NET Core - Implementando a segurança com ... - Macoratti.net
ASP .NET Core - Apresentando Razor Pages - Macoratti