Neste artigo eu vou mostrar como criar Controllers e Views em um projeto ASP .NET Core via linha de comando. |
Neste artigo vou criar um projeto ASP .NET Core usando a ferramenta NET CLI e o Visual Studio Code e a seguir mostrar como você pode criar Controllers e Views usando o comando dotnet aspnet-codegenerator.
Primeiro eu vou criar um projeto ASP .NET Core MVC para acessar a tabela Clientes de um banco de dados SQL Server existente chamado Estudo.mdf. Abaixo temos a estrutura da tabela e a string de conexão com o banco de dados:
String de conexão com o banco de dados Estudo: Data Source=MACORATTI;Initial Catalog=Estudo;Integrated Security=True |
Vou usar a ferramenta de linha de comando para realizar o Scaffolding para gerar o modelo de entidades e o contexto a partir do banco de dados usando o comando dotnet ef dbcontext scaffold e depois eu vou mostrar como gerar o controlador e as views usando a linha de comando.
Recursos usados:
Criando o projeto via linha de comando (NET CLI)
Abra um terminal de comandos no seu ambiente. Eu estou usando o Windows PowerShell.
Crie uma pasta onde o projeto deverá ser hospedado. Eu vou criar uma pasta usando o comando: md AspCore_Scaffolding
A seguir entre na pasta criada : cd AspCore_Scaffolding
Para ver as opções de projetos digite : dotnet new
Vamos escolher o template mvc para criar um projeto ASP .NET Core MVC digitando: dotnet new mvc
Ao final teremos o projeto ASP .NET Core MVC criado na pasta AspCore_Scaffolding :
Temos assim uma aplicação funcional, na verdade , um simples projeto inicial, que é o nosso ponto de partida. Até aqui usamos a ferramenta de linha de comando NET CLI.
Neste momento podemos abrir o projeto no VS Code digitando : code . , e espiar o arquivo de projeto AspCore_Scaffolding.csproj :
Como vamos acessar o banco de dados usando o Entity Framework Core precisamos incluir uma referência a ele em nosso projeto.
Fazemo isso digitando o seguinte comando no terminal : dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Nota: O provedor EntityFrameworkCore.SqlServer permite ao Entity Framework Core ser usado com o Microsoft SQL Server.
Abrindo o arquivo de projeto .csproj novamente agora veremos a referência ao Entity Framework Core incluida conforme abaixo:
Gerando o modelo de entidades e o contexto via Scaffolding
1- Preparando o ambiente
Agora vamos gerar o modelo de entidades e o contexto usando o Scaffolding, onde vamos partir do banco de dados existente Estudo.mdf e da tabela Clientes.
Para poder fazer isso temos que ter acesso ao comando : dotnet ef
Para ter acesso aos comandos dotnet ef temos que incluir as seguintes referências no projeto:
1-
Microsoft.EntityFrameworkCore.SqlServer.Design :
Permite acesso as funcionalidades do Entity Framework para realizar o
Migrations em tempo de projeto
2-
Microsoft.EntityFrameworkCore.Tools : Ferramenta de linha de
comando do Ef Core que permite usar os comandos dotnet ef.
3-
Microsoft.EntityFrameworkCore.Tools.DotNet -
Ferramenta
de linha de comando do Ef Core que permite usar os comandos dotnet ef. (*)
Vamos instalar primeiro pacote : dotnet add package Microsoft.EntityFrameworkCore.SqlServer.Design
A seguir vamos instalar o segundo pacote : dotnet add package Microsoft.EntityFrameworkCore.Tools
Abrindo o arquivo de projeto .csproj veremos as referências conforme abaixo:
Vamos dar um comando : dotnet restore para restaurar as depêndencias.
Para concluir precisamos incluir uma referência ao pacote Microsoft.EntityFrameworkCore.Tools.DotNet.
Para isso temos que editar o arquivo de projeto .csproj e incluir a referência em um <ItemGroup> como um <DotNetCliToolReference> conforme abaixo:
Nota: Infelizmente até o momento essa é a única forma de incluir referências a ferramentas no projeto.
Muito bem. Não temos erros e todas as dependências estão restauradas. Podemos continuar...
Agora para saber se já temos acesso aos comandos do Entity Framework Core digite : dotnet ef
Voilá !!!
Agora podemos usar o Scaffolding usando a ferramenta EF Core Tools para gerar as entidades e o contexto a partir do banco de dados.
A
ferramenta EF Core Tools possui outros comandos
como:
dotnet ef dbcontext info
:
Obtém informação sobre o tipo do DbContext
|
Para gerar o modelo de entidades a partir do banco de dados existente usamos o comando :
Scaffold-DbContext "string de conexão com o banco de dados" nome_do_provedor_do_banco_de_dados -o nome_da_pasta
Para o nosso exemplo o comando ficará assim:
Scaffold-DbContext "Data Source=.\;Initial Catalog=Estudo;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -o Models
Nesta instrução temos :
O comando: Scaffold-DbContext
A string de conexão do banco de dados : "Data Source=.\;Initial Catalog=Estudo;Integrated Security=True"
O nome do provedor usado : Microsoft.EntityFrameworkCore.SqlServer
O nome da pasta onde as classes serão geradas: -o Models
Ao final do processamento (nenhuma mensagem é exibida
e nenhum erro deve ocorrer) podemos abrir o projeto
no VS Code e verificar na pasta Models as
classes geradas :
Nota: Para saber mais sobre os comandos da
ferramenta de linha de comando consulte este link :
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
O processo de engenharia reversa criou a classe de entidade e um contexto derivado baseado no esquema do banco de dados existente. As classes de entidade são objetos C# simples que representam os dados que você estará consultando e salvando. No nosso exemplo as informações de clientes da tabela Clientes.
Acima temos o código gerado para a
classe Clientes.
Esta classe representa o nosso modelo de domínio e será
mapeada para a tabela Clientes.
O código gerado para o contexto esta no arquivo EstudoContext.cs cujo código vemos a seguir:
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
namespace AspCore_Scaffolding.Models
{
public partial class EstudoContext : DbContext
{
public virtual DbSet<Clientes> Clientes { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(@"Data Source=.\;Initial Catalog=Estudo;Integrated Security=True");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Clientes>(entity =>
{
entity.Property(e => e.Email).HasMaxLength(250);
entity.Property(e => e.Endereco).HasMaxLength(150);
entity.Property(e => e.Nome)
.IsRequired()
.HasMaxLength(80);
entity.Property(e => e.Telefone).HasMaxLength(80);
});
}
}
}
|
A classe EstudoContext
é a classe responsável pela interação com os objetos de
dados sendo derivada da 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.
Este código cria uma propriedade DbSet para a entidade Clientes. 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.
Muuito bem... conseguimos fazer o Scaffolding usando as ferramentas do EF Core e gerar o nosso modelo de entidades e o contexto a partir do banco de dados existente.
Na segunda parte do artigo vou mostrar como gerar o Controlador e as Views para o projeto usando a linha de comando.
Antes, como ministros de Deus, tornando-nos
recomendáveis em tudo; na muita paciência, nas aflições,
nas necessidades, nas angústias,Como contristados, mas
sempre alegres; como pobres, mas enriquecendo a muitos;
como nada tendo, e possuindo tudo.
2 Coríntios 6:4,10
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#
ASP .NET Core - Criando uma aplicação com Angular 2 - Macoratti.net
ASP .NET Core - Criando uma aplicação Web no ... - Macoratti.net