View on GitHub

aulas-programacao-csharp

Materiais de Aula - Programação de Computadores com C#

Bancos de dados com MySQL

📽 Veja esta vídeo-aula no Youtube

Entity Framework - Cheatsheet (cola)

No objetivo é acessar bancos de dados no C#. Há uma infinidade de maneiras de se fazer isso; nesse curso optaremos pela seguinte combinação:

Está fora do escopo desse curso ensinar bancos de dados. Há diversos cursos na Internet sobre o assunto. Infelizmente isso é um pré-requisito necessário.

💡 Se você é um aluno de curso presencial de Etec, você certamente cursou ou está cursando componentes que tratam de bancos de dados relacionais.

Preparando um banco de dados

Precisamos de uma instância de MySQL em execução com um banco de dados para ser acessado, e credenciais válidas com permissões suficientes.

💡 Caso você ainda não saiba instalar o MySQL, veja este passo-a-passo.

Nos exemplos abaixo consideraremos uma instalação padrão do MySQL, com as seguintes configurações:

Vamos usar um banco de dados de exemplo constante na documentação do MySQL chamado employees. Você pode usar um outro banco de dados qualquer, se preferir.

Baixe o Employees no site do MySQL, Documentation, More. Em Example Databases, você verá um link para o repositório no GitHub, e um para a documentação. Na documentação há várias informações úteis, como por exemplo, o seu diagrama entidade-relacionamento.

DER:

No GitHub, baixe o repositório e extraia o conteúdo para uma pasta temporária (pode clonar, se preferir).

Você deverá possui os seguintes arquivos:

Abra o Workbench, e conecte-se ao seu banco de dados:

Execute o script employees.sql usando a opção File, Run SQL Script….

Confirme a execução e aguarde.

Ao final, na janela Navigator, aba Schemas, atualize clicando no botão no canto superior direito. Seu banco de dados deve aparecer na lista. Abra a lista de tabelas e verifique se elas estão lá.

Feito isso, seu servidor possui um banco de dados carregado e online. Você pode apagar os arquivos baixados do GitHub, se quiser.

Conectando um projeto C# console com o MySQL

Crie seu projeto console, normalmente.

Agora, vamos adicionar em seu projeto, via NuGet, os pacotes do Entity Framework (EF).

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Design

Também precisamos do pacote do provedor de dados do MySQL:

dotnet add package Pomelo.EntityFrameworkCore.MySql

Como vamos usar ORM, precisaremos de classes em nosso programa equivalentes às tabelas no banco de dados. Podemos criá-las automaticamente, com ferramentas. Esse processo de criar código usando ferramentas é chamado scaffolding.

Primeiro, vamos instalar a ferramenta Entity Framework Core .NET Command-line Tools, que nos traz diversas facilidades para trabalhar com EF. Você so fará isso uma vez em seu computador, não precisando repetir todas as vezes.

dotnet tool install --global dotnet-ef

Para testar se ela já está instalado, digite dotnet ef --version.

Instalada:

C:\Users\ermog\Documents\code>dotnet ef --version
Entity Framework Core .NET Command-line Tools
3.1.9

Não-instalada:

C:\Users\ermog\Documents\code>dotnet ef --version
Não foi possível executar porque o comando ou o arquivo especificado não foi encontrado.
Possíveis motivos para isso incluem:
 * Você digitou incorretamente um comando de dotnet embutido.
 * Você pretendia executar um programa .NET Core, mas dotnet-ef não existe.
 * Você pretendia executar uma ferramenta global, mas não foi possível encontrar um executável com prefixo de dotnet com esse nome no CAMINHO.

Já estando instalada anteriormente, assegure-se de que está utilizando a versão mais atualizada:

dotnet tool update --global dotnet-ef

Agora podemos realizar o scaffolding, passando a string de conexão para o seu banco:

dotnet ef dbcontext scaffold "server=___;port=___;user=___;password=___;database=___" Pomelo.EntityFrameworkCore.MySql -o ___ -f

A opção --no-pluralize faz o scaffolding sem tentar gerar plurais automaticamente. É especialmente útil quando o banco foi modelado com termos em português.

Exemplo:

dotnet ef dbcontext scaffold "server=localhost;port=3306;user=root;password=root;database=employees" Pomelo.EntityFrameworkCore.MySql -o db -f

Saída:

Build started...
Build succeeded.

Seu projeto ficará parecido com isso:

Este texto continua aqui.