Neste artigo vamos criar uma aplicação ASP .NET Core MVC usando o Entity Framework Core e acessar o MySql e realizar o CRUD básico no ambiente Linux. |
Se você estivesse em coma por uns 20 anos e acordasse hoje, e, se eu lhe dissesse que podemos criar uma aplicação web MVC acessando o MySQL sem usar a tecnologia ADO no ambiente Linux. Você poderia pensar que eu estou ficando doido ou que você esta delirando...
|
Mas nada disso, os tempos mudaram e a Microsoft agora esta aderente ao mundo open-source e multiplataforma.
Assim, neste artigo vamos criar uma aplicação Web MVC usando a ASP .NET Core 2.1 e acessando o banco de dados MySQL usando a ferramenta ORM Entity Framework Core 2.1.
Ainda esta duvidando ??? Então siga-me...
Primeiro vou mostrar como você deve configurar o seu ambiente Linux e depois vou mostrar como criar a aplicação usando as ferramentas todas open-source.
O ambiente Linux
Eu não sou um especialista no Linux, embora tenha usado o Unix, lá pelos idos de
1980, onde abria dezenas de instâncias de terminais de linha de comando para
executar scripts batchs.
Então a linha de comando não me mete medo; na verdade eu me sinto muito à vontade com ela.
O ambiente Linux(a distro) que estou usando é o Ubuntu 18.04.1 LTS. É uma máquina física, mas você pode criar uma máquina virtual (Vide VirtualBox) que vai funcionar do mesmo jeito.
Instalando o .NET Core SDK 2.1
O .NET Core é o novo Framework open-source e multiplataforma da Microsoft.
Você tem que instalar a última versão estável no seu ambiente Linux.
Neste link você obtém a última versão estável do .NET Core que é a 2.1.403. Selecione a sua distribuição do Linux e siga as instruções para instalar no seu ambiente Linux.
Instalando o Visual Studio Code
O Visual Studio Code é o editor de códigos da Microsoft open-source e multiplataforma.
Para instalar o VS Code para Linux acesse o link : https://code.visualstudio.com/download escolha a sua distro Linux e siga as instruções.
Após instalar o VS Code você tem que instalar as seguintes extensões no VS Code para poder trabalhar com a linguagem C# :
Acima vemos as extensões instaladas no VS Code que eu estou usando.
Instalando o MySql
A versão curta da instalação é bem simples: atualize seu índice de pacotes, instale o pacote mysql-server, e então execute o script de segurança que vem incluído.
Ao executar o script de segurança defina a senha para o usuário root e pronto.
Apenas para verificar vamos acessar o MySQL digitando: mysql -u root -p
Informando a senha do root e digitando o comando show databases; vemos os bancos de dados do sistema.
Criando o projeto ASP .NET Core MVC
Abra um terminal de comandos no Linux e crie uma pasta onde o projeto vai ser armazenado usando os comandos mkdir para criar e cd para navegar entre as pastas.
Para o exemplo deste artigo eu crie uma pasta projetos e dentro dela outra pasta mvclinux onde vou criar o projeto ASP .NET Core MVC.
mkdir
projetos
cd projetos
mkdir mvclinux
cd mvclinux
Posicionado na pasta onde vai criar o projeto digite o comando para criar o projeto ASP .NET Core MVC usando a ferramenta de linha de comando NET CLI:
dotnet new mvc
Este comando cria um projeto na pasta atual com o mesmo nome da pasta.
Digite o comando para exibir o conteúdo da pasta : ls -g
Vemos os arquivos e pastas do projeto criados na pasta atual.
Vamos abrir o código do projeto no Visual Studio Code digitando : code .
Vemos acima o projeto aberto no VS Code no Linux e o arquivo de projeto .csproj mostrando as referências.
Incluindo os pacotes para o MySql
Para poder usar o Entity Framework core no projeto acessando o MySql temos que incluir o pacote com o provedor para o MySql.
Nota: Veja uma relação de provedores disponíveis neste link
Além disso temos que instalar os seguintes pacotes:
Para instalar um pacote usando a NET CLI usamos o comando : dotnet add package <pacote>
Agora digite os comandos abaixo para incluir os pacotes no projeto:
dotnet add package Pomelo.EntityFrameworkCore.MySql
dotnet add package Pomelo.EntityFrameworkCore.MySql.Design
dotnet add package Microsoft.EntityFrameworkCore.Tools
Terminando a execução dos comandos e abrindo o arquivo de projeto .csproj no VS Code devemos ver as referências aos pacotes:
Agora que temos o suporte ao EF Core vamos criar as classes das entidades para a nossa aplicação.
Como nossa aplicação é bem simples e vai gerenciar informações de livros ela vai ter apenas uma entidade chamada Livro.
Vamos agora criar a classe que representa a nossa entidade na pasta Models do projeto.
Nota:
Você pode colocar classes
do modelo em qualquer lugar
em seu projeto, mas a pasta
Models é usada por
convenção.
As classes são
criadas na pasta Models clicando com o botão
direito sobre a pasta, selecionando New C# Classs
e a seguir informando o nome da classe.
Vamos iniciar criando o arquivo Livro.cs e nele vamos definir a classe Livro conforme abaixo:
using System;
namespace mvclinux.Models
{
public class Livro
{
public int Id { get; set; }
public string Nome { get; set; }
public string Autor { get; set; }
public int PublicadoEm { get; set; }
}
}
|
A propriedade Id será a coluna de chave primária da tabela de banco de dados que corresponde a essa classe. Por padrão, o Entity Framework interpreta uma propriedade que é chamada de ID ou nome_classeID como sendo a chave primária.(Podemos alterar esse comportamento com annotations)
Nota : O Entity Framework por padrão adota algumas convenções (Conventions) que ele usa para realizar algumas operações.
Criando a classe de contexto do Banco de dados
O Entity Framework
permite consultar, inserir, atualizar e excluir dados,
usando objetos CLR(Common Language Runtime)
conhecidos como entidades; ele mapeia as entidades e
relacionamentos que são definidos no seu modelo de
entidades para um banco de dados e fornece facilidades
para realizar as seguintes tarefas:
1- Materializar dados retornados
do banco de dados como objetos de entidade;
2- Controlar as alterações que foram feitas nos objetos;
3- Lidar com concorrência;
4- Propagar as alterações feitas nos objetos de volta ao
banco de dados;
5- Vincular objetos a controles.
A principal classe responsável pela interação com os
objetos de dados é a classe
System.Data.Entity.DbContext (muitas vezes
referida como o contexto).
Essa classe de contexto administra os objetos entidades
durante o tempo de execução, o que inclui preencher
objetos com dados de um banco de dados, controlar
alterações, e persistir dados para o banco de dados.
A maneira recomendada para trabalhar com o contexto é definir uma classe que deriva de DbContext e expõe as propriedades de DbSet que representam as coleções das entidades especificadas no contexto.
Essa classe é chamada de
classe de contexto do banco de dados e coordena a
funcionalidade do Entity Framework para um dado modelo
de dados. No código dessa classe você especifica quais
entidades estão incluídas no modelo de dados. Você
também pode personalizar determinado comportamento do
Entity Framework. Neste projeto, a nossa classe de
contexto será chamada AppDbContexto.
Para simplificar eu vou criar essa classe na pasta
Models. Então crie o arquivo AppDbContext.cs
na pasta Models e a seguir inclua o código abaixo
na classe AppDbContext:
using Microsoft.EntityFrameworkCore;
namespace mvclinux.Models
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<Livro> Livros { get; set; }
}
}
|
Este código cria uma propriedade DbSet para cada a entidade Livro. Na terminologia Entity Framework, um conjunto de entidades corresponde a uma tabela de banco de dados e uma entidade corresponde a uma linha na tabela.
Registrando o contexto com injeção de dependência
A ASP.NET Core implementa
a injeção de dependência por padrão. Os serviços (como o
contexto de banco de dados do EF) são registrados com
injeção de dependência durante a inicialização do
aplicativo. Componentes que requerem esses serviços
(como controladores MVC) fornecem esses serviços
através de parâmetros do construtor. Mais adiante iremos
definir no construtor do controlador a instância do
contexto.
Para registrar o nosso contexto AppDbContext
como um serviço, abra o arquivo Startup.cs e
adicione as linhas realçadas ao método
ConfigureServices:
using Microsoft.EntityFrameworkCore; using mvclinux.Models; ... // Add framework services.
services.AddMvc();
}
....
|
O nome da string de conexão é passada para o contexto pela chamada do método no objeto DbContextOptionsBuilder. Para o desenvolvimento local a ASP .NET Core obtém a string de conexão do arquivo appsettings.json.
Vamos então abrir o arquivo appsettings.json e adicionar a string de conexão conforme mostrado a seguir:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConexaoMySql": {
"MySqlConnectionString": "Server=localhost;DataBase=Livraria;Uid=root;Pwd=*******"
}
}
|
A string de conexão especifica um banco de dados identificado pelo nome Livraria.
Nota: Informe um usuário e senha válidos para o seu ambiente.
Criando o banco de dados e tabela - Usando Migrations
Após definir o nosso modelo inicial representando pela classe Livro e definir o contexto na classe AppDbContext onde informamos o provedor do banco de dados usado, a string de conexão e o mapeamento da entidade para a tabela Livros, o EF Core tem todas as condições para criar o banco de dados Livraria e a tabela Livros usando o Migrations.
Usando o recurso Migrations do Entity Framework podemos realizar alterações em nosso modelo de entidades e ter a atualização automática do banco de dados refletindo essas mudanças.
Para aplicar o migrations vamos usar a ferramenta de linha de comando do EF Core digitando no terminal os seguintes comandos:
dotnet ef migrations add InitialCreate - Para suportar a migração e criar o conjunto inicial de tabelas para o modelo;
dotnet ef database update - Para aplicar a migração ao banco de dados;
Digitando o primeiro comando teremos o seguinte resultado:
Abrindo o projeto no VS Code, vemos a pasta Migrations criada no projeto contendo 3 arquivos:
Abrindo o arquivo 20181101131057_Inicial.cs a vemos o scripts contendo os comandos para criar a tabela Livros definindo as colunas e chave primária :
Digitando o segundo comando no terminal temos o resultado abaixo:
Dessa forma já temos o banco de dados Livraria e a tabela Livros criados no MySQL no ambiente Linux.
Acessando o MySql podemos constatar a criação do banco de dados Livraria conforme figura a seguir:
Na próxima parte do artigo vamos criar o controller e as views para realizar o CRUD básico e gerenciar dados da tabela Livros.
"Jesus respondeu: Na verdade,
na verdade te digo que aquele que não nascer da água e
do Espírito, não pode entrar no reino de Deus."
João 3:5
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 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Entity Framework - Conceitos Básicos - Uma visão geral - Macoratti
https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
https://www.microsoft.com/net/download/linux-package-manager/ubuntu18-04/sdk-2.1.403