Primeiro passo para codar do zero ASP.NET C# MVC Microsoft Visual Studio
Índice
1. Criar uma classe tipo model
2. Criar uma classe DbContext Contexto na pasta model.
3. Criar o Controller
4. Adicionar em Runtime a conexão dbContext no ficheiro Program.cs
5. Migration
6. Linkar o menu do produto no ficheiro _layout da view\shared
Esse passo criará um CRUD utilizando o Entity Framework Core, então é obrigatório seguir os passos conformes descritos abaixo para funcionar corretamente.
Start
1. Criar uma classe tipo model da tabela na pasta model .
Essa tipo de classe ela não recebe metodos, ela serve somente para armazenar e recurear dados, classe escopo.
A pasta model é onde ficarão as persistência da base de dados e utilizado os Data Annotations. ver em Conceitos importante.
Copie esse modelo e cole no seu projeto
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace LojistaNet.Models
{
[Table("Linhas")]
public class Linhas
{
[Column("Id")]
[Display(Name = "Código")]
public int Id { get; set; }
[Display(Name = "Nome")]
[Column("Nome", TypeName = "Varchar(150)")]
public string Nome { get; set; }
[Column("NCM")]
[MaxLength(9)]
[Display(Name = "NCM")]
public string NCM { get; set; }
}
}
Importante: é obrigatório definir a primary key da tabela, se o nome do campo for Id o Entity framework cria automáticamente a primary key.
a) Clique com o botão direito do rato no pasta model e vai em Adicionar classe.
2. Criar uma classe do tipo DbContext na pasta model.
DbContext é a classe responsável pela conexão com o banco de dados com Entity FrameWork Core.
Dica: Ctrl + . ele adiciona a referência
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.EntityFrameworkCore;
namespace LojistaNet.Models
{
public class Contexto : DbContext{
public Contexto(DbContextOptions<Contexto> options) : base(options)
{
}
public DbSet<Linhas> Linhas { get; set; }
}
}
Alerta: Para utilizar a classe DbContext é necessário instalar os pacotes Install Microsoft.EntityFrameworkCore,
Verificar o comando DbSet se está a usar a classe do model correta, pois são essas classes que são DbSet que o migration criará na base de dados.
3 Adicionar a conexão dbContext no Program.cs
O ficheiro Program.cs é executado ao carregar o inicio do software.
Adicionar a chamada da conexão entre os dois builder conforme abaixo:
builder.Services.AddControllersWithViews();
//Add DbContext a conexão
builder.Services.AddDbContext<Contexto>
(options => options.UseSqlServer("Data Source=SERVER-PORT; Initial Catalog=NET; User Id=sa; Password=Sistema@123;TrustServerCertificate=True"));
var app = builder.Build();
Maneiras para tratar String de conexão
"Data Source=SERVER-PORT; Initial Catalog=NET; User Id=sa; Password=Sistema@123;TrustServerCertificate=True"
Importante: Quando há instancia na conexão devido a "/ " o é necessário colocar duas barras "//"
"Data Source=ELIOMAR-PC//SQLEXPRESS; Initial Catalog=NET; User Id=sa; Password=Sistema@***;TrustServerCertificate=True"
Na string de conexão se não tiver um certificado válido no servidor.
TrustServerCertificate=True
4. Criar o Controller
Adicionar um controller do tipo Entity, quando adicionar a classe controller ela cria automáticamente os views
Scafold gera todas as views do CRUD para a classe tabela que desejamos.
scaffolding..
Importante: Para funcionar corretamente e o scaffold gerar automaticamente seu controller com as views é obrigatório a criação da classe de DBContext e chama-la no ficheiro do inicio da aplicação.
5. Migration - Managing Migrations
a) Manual mente utilizando os comandos
Segue abaixo o caminho do menu em português e inglês.
\ Exibir \ Outras Janelas \ Console do Gerenciador de Pacotes
\ View \ Other Windows \ Packages Manages Consoles
add-Migration: Esse comando, primeiro ele cria um arquivo tipo classe com a estrutura de todos os campos que serão criado na base, pode verificar a classe se criou tudo e se está ok.
É obrigatório executar esses comandos antes de abrir a página
add-Migration Inicial-criacao -Context Contexto
Update-database: É o comando que cria as tabelas na base de dados a partir da classe criada por add-Migration.
Update-database -Context Contexto
Importante: Ele cria uma tabela com o histórico das tabelas criadas se desejar recriar a tabela do zero, apague essa tabela.
b) Automático com o comando Database.Migrate();
ou pode também por na classe DbContext para criar de maneira automática.
var app = builder.Build();
//Criar tabelas via migration
using (var serviceScope = app.Services.CreateScope())
{
var dbContext = serviceScope.ServiceProvider.GetRequiredService<DBAppContexto>();
await dbContext.Database.MigrateAsync();
// or dbContext.Database.EnsureCreatedAsync();
}
Importante: Apague a tabela __EFMigrationsHistory da base de dados MSSQL Server se for preciso começar de novo.
public class DBAppContexto : DbContext
{
public DBAppContexto(DbContextOptions<DBAppContexto> options) : base(options)
{
Database.Migrate();
// Or Database.EnsureCreated();
}
public DbSet<Usuario> Usuarios { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Model configuration
// modelBuilder.Entity<CartItem>().HasKey(x => new { x.CartId, x.ProductId })
base.OnModelCreating(modelBuilder);
}
}
Importante: Apague a tabela __EFMigrationsHistory da base de dados MSSQL Server.
6. Linkar o menu do produto no ficheiro _layout da view\shared
Mudar nos menus o link para o novo controller criado.
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Linhas" asp-action="index">Produtos</a>
</li>
Aqui finaliza o primeiro passo para criar um projeto simples com Entity Framework Core, a continuação está em outro post.
Obrigado!
.Eliomar Souza
Comentários
Postar um comentário