.NET - O padrão Repositório revisitado - II


  Neste artigo vamos rever os conceitos relacionados ao padrão repositório com um exemplo prático em uma aplicação ASP .NET MVC 5 usando a linguagem C#.

Na primeira parte do artigo criamos a solução, e os projetos Web e Dominio da nossa aplicação, e , já definimos a nossa entidade de domínio, o nosso contexto e o repositório usado pela nossa aplicação.

Vamos agora implementar a nossa camada de negócios incluindo um novo projeto chamado Mvc_Repositorio.Negocio em nossa solução e definindo a(s) nossa(s) classe(s) de negócios.

Recursos usados :

Implementando a camada de Negócios (BLL)

Abra o projeto Mvc_Repositorio criado na versão do VS 2013 Express for web do artigo anterior;

Vamos incluir um novo projeto do tipo Class Library em nossa solução.

No menu File clique em Add -> Project e selecione o template Class Library e informe o nome Mvc_Repositorio.Negocio;

A seguir vamos incluir uma referência neste projeto ao projeto Mvc_Repositoriio.Domino.

Clique com botão direito sobre o nome do projeto e a seguir em Add -> Reference;

Selecione o projeto Mvc_Repositorio.Dominio e clique em OK.

Agora vamos criar a classe UsuarioBLL nesse projeto.

No menu PROJECT clique em Add New Item;

Selecione o template class e informe o nome UsuarioBLL.cs

Agora vamos definir os métodos nessa classe que irão implementar os métodos para atender as requisições da camada de apresentação relacionadas a entidade Usuario.

using Mvc_Repositorio.Dominio.Entidades;
using Mvc_Repositorio.Dominio.Repositorio;
using System.Collections.Generic;
using System.Linq;
namespace Mvc_Repositorio.Negocio
{
    public class UsuarioBLL
    {
        IUsuarioRepositorio _usuarioRepositorio;
        public UsuarioBLL()
        {
            _usuarioRepositorio = new UsuarioRepositorio();
        }
        public List<Usuario> Get_UsuarioInfo(int ID = -1)
        {
            if (ID == -1)
            {
                //retorna todos os usuarios
                return _usuarioRepositorio.GetTodos().ToList();
            }
            else
            {
                //retorna um determinado usuario pelo seu ID
                return _usuarioRepositorio.Get(p => p.UsuarioId == ID).ToList();
            }
        }
        public void AdicionarUsuario(Usuario emp)
        {
            _usuarioRepositorio.Adicionar(emp);
            _usuarioRepositorio.Commit();
        }
        public Usuario Localizar(int? id)
        {
            return _usuarioRepositorio.Procurar(id);
        }
        public void ExcluirUsuario(Usuario emp)
        {
            _usuarioRepositorio.Deletar(c => c == emp);
            _usuarioRepositorio.Commit();
        }
        public void AlterarUsuario(Usuario emp)
        {
            _usuarioRepositorio.Atualizar(emp);
            _usuarioRepositorio.Commit();
        }
    }
}

Na classe UsuarioBLL implementamos métodos para realizar as operações CRUD e selecionar dados usando o Repositorio criado na camada de Dominio.

Eu não implementei um tratamento de exceção nesta classe para deixar o código mais simples. Mas é muito simples implementar isso.

Como exemplo vou usar o método

public void AdicionarUsuario(Usuario emp)
 {
            try
            {
                _usuarioRepositorio.Adicionar(emp);
                _usuarioRepositorio.Commit();
            }
            catch
            {
                throw;
            }
}

O tratamento é bem simples e não contamina a chamada de origem com erros ocorridos em outras camadas.

Vamos agora iniciar a implementação da camada de interface mas antes vamos abrir o projeto Mvc_Repositorio (a nossa aplicação MVC) e a seguir abrir o arquivo Web.Config da solução.

Nesta arquivo vamos incluir a string de conexão ConexaoUsuarios definida em nossa classe de contexto UsuarioContexto.

Inclua a seção <connectionStrings> conforme mostrada abaixo no arquivo Web.Config:

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

Pronto ! Agora podemos continuar, e vamos criar agora o controlador UsuarioController na pasta Controllers do projeto Mvc_Repositorio.

Antes temos que incluir uma referência no projeto Mvc_Repositorio aos projetos Mvc_Repositoriio.Domino e Mvc_Repositoriio.Negocio.

Clique com botão direito sobre o nome do projeto e a seguir em Add -> Reference;

Selecione os projetos indicados na figura abaixo e clique em OK.

Agora temos acesso às entidades e ao repositório bem como na camada de negócios.

Vamos criar o controlador.

Clique com o botão direito do mouse sobre a pasta Controllers e a seguir em Add Controller;

Selecione o Scaffold - MVC 5 Controller with views, using Entity Framework -, e clique no botão Add;

Informe o nome UsuarioController, defina o Model Class como Usuario e Data context class como UsuarioContexto e marque Generate views e Use a layout page:

Como isso nosso controlador UsuarioController será criado mas se espiarmos o código iremos notar que ele esta usando a classe de contexto para criar a instância das entidades e acessar os dados.

Precisamos alterar isso de forma que o controlador utilize a nossa camada de negócios e seus métodos.

Na próxima parte do artigo vamos ajustar o código do controlador criado e concluir o nosso projeto.

Porque a lei foi dada por Moisés; a graça e a verdade vieram por Jesus Cristo.
Deus nunca foi visto por alguém. O Filho unigênito, que está no seio do Pai, esse o revelou.
João 1:17,18

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 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti