ASP .NET MVC - CRUD básico com  ADO .NET e UpdateModel em camadas - I


 No artigo de hoje eu vou mostrar como criar um CRUD básico e abordar como usar o método UpdateModel em uma aplicação ASP .NET MVC.

No modelo tradicional de desenvolvimento ASP .NET, usando Web Forms, as requisições do navegador são mapeadas para páginas, que devem existir fisicamente no servidor.  O desenvolvimento é centrado no conteúdo das páginas.

No modelo de desenvolvimento ASP .NET MVC as requisições do navegador são mapeadas para ações do Controlador (Controller). O desenvolvimento é centrado na lógica da aplicação. (leia-se mapeamento)

Dessa forma cada requisição de uma aplicação ASP .NET MVC é tratada pelo controlador que é livre para tratar a requisição como desejar de acordo com a lógica definida no controlador quer seja realizar operações no modelo de domínio ou selecionar views para ser renderizadas ao  usuário.

O método UpdateModel do controlador permite atualizar uma instância do modelo especificada usando valores do provedor de valor atual do controlador. Esse método possui diversas sobrecargas.

 

Neste artigo veremos como usar o UpdateModel em uma aplicação ASP .NET MVC onde iremos definir uma camada de negócio usando objetos de negócios com os recursos da ADO .NET.

 

Vou utilizar o banco de dados Cadastro.mdf do SQL Server e definir a tabela Alunos com a estrutura mostrada na figura abaixo:

 

 

A string de conexão definida para este banco de dados é  definida como : "Data Source=.\sqlexpress;Initial Catalog=Cadastro;Integrated Security=True"

 

Neste banco de dados criamos as seguintes Stored Procedures:

 

1- GetAlunos - Seleciona os alunos da tabela Alunos

 

USE [Cadastro]
GO
Create procedure [dbo].[GetAlunos]
as
Begin
 Select Id, Nome, Email, Idade, DataInscricao, Sexo
 from Alunos
End

 

2- IncluirAluno - Inclui um aluno na tabela Alunos

 

Use Cadastro
Go
Create procedure IncluirAluno
   @Nome nvarchar(50),  
   @Email nvarchar (100),  
   @Idade int,  
   @DataInscricao DateTime,  
   @Sexo nchar(1)
as  
Begin  
 Insert into Alunos (Nome, Email, Idade, DataInscricao, Sexo)  
 Values (@Nome, @Email, @Idade, @DataInscricao, @Sexo)  
End

 

3- AtualizarAluno - Atualiza as informações para um dado aluno na tabela Alunos

 

Use Cadastro
Go
Create procedure AtualizarAluno      
	@Id int,
	@Nome nvarchar(50),      
	@Email nvarchar (100),  
	@Idade int,  
	@DataInscricao DateTime,  
	@Sexo nchar(1)
as      
Begin      
 Update Alunos Set
 Nome = @Nome,
 Email = @Email,
 Idade = @Idade,
 DataInscricao = @DataInscricao,
 Sexo = @Sexo
 Where Id = @Id 
End

 

4- DeletarAluno - Exclui informações para um dado aluno na tabela Alunos

 

Use Cadastro
Go
Create procedure DeletarAluno
@Id int
as
Begin
 Delete from Alunos
 where Id = @Id
End

 

Após essas operações serem feitas através do SQL Server Management Studio iremos ver o resultado abaixo:

 

 

Nosso objetivo será acessar as informações dessa tabela e realizar o CRUD em uma aplicação ASP .NET MVC.

 

Recursos usados :

Criando o projeto no VS 2013 Express for web

Abra o VS 2013 Express for web e clique em New Project;

A seguir selecione Visual C# -> ASP .NET Web Application;

Informe o nome Mvc_BO e clique no botão OK;

A seguir selecione o template Empty, marque MVC  e clique no botão OK;

Será criado um projeto ASP .NET MVC vazio com a estrutura básica para criarmos o nosso exemplo.

Definindo a camada de Negócios : Incluindo um novo projeto BLL na solução

Vamos agora incluir um novo projeto em nossa solução chamado BLL onde iremos definir nossa camada de negócio usando objetos de negócios definidos por classes com os recursos da ADO .NET.

No menu FILE clique em Add -> New Project;

A seguir selecione Visual C# e o template Class Library e informe o nome BLL e clique no botão Add;

Agora vamos definir a classe Aluno neste projeto que irá representa o nosso modelo de domínio.

No menu PROJECT clique em Add Class e informe o nome Aluno e a seguir clique no botão Add:

A seguir digite o código abaixo definindo 6 propriedades na classe Aluno:

public class Aluno
{
        public int Id { get; set; }
        public string Nome { get; set; }
        public string Email { get; set; }
        public int Idade { get; set; }
        public DateTime DataInscricao { get; set; }
        public string Sexo { get; set; }
}

Agora vamos definir outra classe chamada  AlunoBLL neste projeto que irá será responsável por acessar e persistir as informações na tabela Alunos do banco de dados Cadastro.mdf.

No menu PROJECT clique em Add Class e informe o nome AlunoBLL e a seguir clique no botão Add:

A seguir digite o código abaixo nesta classe:

using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace BLL
{
    public class AlunoBLL
    {
        public IEnumerable<Aluno> getAlunos()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["ConSQLServer"].ConnectionString;
            List<Aluno> alunos = new List<Aluno>();
            try
            {
              using (SqlConnection con = new SqlConnection(connectionString))
              {
                    SqlCommand cmd = new SqlCommand("GetAlunos", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    con.Open();
                    SqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        Aluno aluno = new Aluno();
                        aluno.Id = Convert.ToInt32(rdr["Id"]);
                        aluno.Nome = rdr["Nome"].ToString();
                        aluno.Email = rdr["Email"].ToString();
                        aluno.Idade = Convert.ToInt32(rdr["Idade"]);
                        aluno.DataInscricao = Convert.ToDateTime(rdr["DataInscricao"]);
                        aluno.Sexo = rdr["Sexo"].ToString();
                        alunos.Add(aluno);
                    }
              }
              return alunos;
            }
            catch
            {
                throw;
            }
        }
     public void IncluirAluno(Aluno aluno)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["ConSQLServer"].ConnectionString;
            try
            {
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    SqlCommand cmd = new SqlCommand("IncluirAluno", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter paramNome = new SqlParameter();
                    paramNome.ParameterName = "@Nome";
                    paramNome.Value = aluno.Nome;
                    cmd.Parameters.Add(paramNome);
                    SqlParameter paramEmail = new SqlParameter();
                    paramEmail.ParameterName = "@Email";
                    paramEmail.Value = aluno.Email;
                    cmd.Parameters.Add(paramEmail);
                    SqlParameter paramIdade = new SqlParameter();
                    paramIdade.ParameterName = "@Idade";
                    paramIdade.Value = aluno.Idade;
                    cmd.Parameters.Add(paramIdade);
                    SqlParameter paramDataInscricao = new SqlParameter();
                    paramDataInscricao.ParameterName = "@DataInscricao";
                    paramDataInscricao.Value = aluno.DataInscricao;
                    cmd.Parameters.Add(paramDataInscricao);
                    SqlParameter paramSexo = new SqlParameter();
                    paramSexo.ParameterName = "@Sexo";
                    paramSexo.Value = aluno.Sexo;
                    cmd.Parameters.Add(paramSexo);
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
            }
            catch
            {
                throw;
            }
        }
    }
}

O código acima obtém a string de conexão do arquivo Web.Config e para isso precisa da referência ao namespace System.Configuration.

No arquivo Web.Config devemos ter definida a string de conexão conforme a seguir:

...
<connectionStrings>
    <add name="ConSQLServer" connectionString="Data Source=.\sqlexpress;Initial Catalog=Cadastro;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
...

Definimos dois métodos na classe AlunoBLL:

1- GetAlunos() - retorna uma coleção de objetos aluno a partir da tabela Alunos;

2- IncluirAluno(Aluno aluno) - inclui um aluno na tabela Alunos;

Nota: Acompanhe as vídeo aulas relacionada com esta série de artigos no curso : ASP .NET MVC 5 - Vídeo Aulas

Na segunda parte do artigo irei criar o controlador e as views da aplicação.

(Disse Jesus) Não crês tu que eu estou no Pai, e que o Pai está em mim? As palavras que eu vos digo não as digo de mim mesmo, mas o Pai, que está em mim, é quem faz as obras.
João 14: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:


José Carlos Macoratti