EF 6 - Aplicação em Camadas - Criando a camada de negócios (BLL) - V
Neste artigo vamos continuar o nosso exemplo anterior criando a camada de negócios (BLL - Business Logic Layer) |
Criando a camada de negócios (BLL)
No artigo anterior criamos o repositório da solução e agora vamos criar a camada de negócios (BLL).
O repositório é utilizado entre a camada DAL e a camada de negócios (BLL) em uma arquitetura em camadas.
A camada de negócios é usada para se comunicar com o banco de dados através do Entity Data Model na camada de acesso a dados.
Assim quando a camada de apresentação requisitar ou enviar dados ela se comunica com a camada de negócios sem se importar como os dados são mantidos ou persistidos.
A responsabilidade da camada de negócios é fornecer métodos para o cliente usar na apresentação e persistência das informações.
Então vamos arregaçar as mangas e partir para o trabalho...
Para atender as requisições da camada de apresentação temos que nos lembrar quais os objetivos a nossa aplicação vai cumprir e quais funcionalidades ela vai possuir.
Nossa aplicação deverá manter empregados e departamentos realizando as operações CRUD - Incluindo, alterando, excluindo e consultando dados. Para isso vamos criar um cadastro de empregados, de departamentos e um módulo de consulta onde iremos exibir os empregados por departamento.
No primeiro artigo nós geramos o nosso Entity Data Model onde obtivemos as entidades Departamento e Empregado.
Dessa forma como já temos o nosso repositório criado vamos definir na camada DAL as interfaces para representar os repositórios específicos para as entidades Empregado e Departamento.
Então selecione o projeto DAL e no menu PROJECT clique em Add New Item;
Selecione o template Interface, informe o nome IEmpregadoRepositorio.cs e clique no botão Add;
A seguir defina o código a seguir para a interface IEmpregadoRepositorio :
using Model;
namespace DAL
{
public interface IEmpregadoRepositorio : IRepositorio<Empregado>
{
}
}
|
Repita o procedimento anterior e crie a interface IDepartamentoRepositorio.cs com o código mostrado abaixo:
using Model;
namespace DAL
{
public interface IDepartamentoRepositorio : IRepositorio<Departamento>
{
}
}
|
Deveremos criar também as classes que implementam as interfaces IEmpregadoRepositorio e IDepartamentoRepositorio na camada DAL.
Então selecione o projeto DAL e no menu PROJECT clique em Add New Item;
Selecione o template Class, informe o nome EmpregadoRepositorio.cs e clique no botão Add;
A seguir defina o código a seguir para a classe EmpregadoRepositorio :
using Model;
namespace DAL
{
public class EmpregadoRepositorio : Repositorio<Empregado>, IEmpregadoRepositorio
{
}
}
|
Repita o procedimento anterior e crie a classe DepartamentoRepositorio.cs com o código mostrado abaixo:
using Model;
namespace DAL
{
public interface DepartamentoRepositorio : Repositorio<Departamento>, IDepartamentoRepositorio
{
}
}
|
Observe que não precisamos definir nenhum código nas interfaces e classes acima pois estamos usando o mecanismo da herança e da implementação da interface e assim estamos usando os métodos definidos na interface IRepositorio e na classe Repositorio. Note também que estamos usando as entidades que foram separadas no projeto Model.
Neste momento nossa solução tem a seguinte estrutura:
Vemos dois projetos : DAL e Model.
Agora sim vamos incluir um novo projeto na solução que será a nossa camada de acesso a dados.
No menu FILE clique em Add -> New Project;
A seguir selecione o template Class Library e informe o nome BLL e clique no botão OK;
Remova o arquivo Class1 criado por padrão no projeto.
Antes de prosseguir vamos incluir referências aos projetos DAL e Model no projeto BLL.
Selecione o projeto BLL e no menu PROJECT clique em Add Reference;
A seguir clique na guia Solution e marque as opções DAL e Model e clique no botão OK;
Agora vamos definir duas classes na camada BLL que irão implementar os métodos para atender as requisições da camada de apresentação relacionadas às entidades Empregado e Departamento.
Selecione o projeto BLL e no menu PROJECT clique em Add Class;
Informe o nome EmpregadoBLL e clique no botão Add;
A seguir inclua o código abaixo na classe EmpregadoBLL:
using System.Collections.Generic;
using System.Linq;
using Model;
using DAL;
namespace BLL
{
public class EmpregadoBLL
{
IEmpregadoRepositorio _empregadoRepositorio;
public EmpregadoBLL()
{
//cria uma instância do repositorio Empregado
_empregadoRepositorio = new EmpregadoRepositorio();
}
public List<Empregado> GetEmpregadosPorDepartamento(int departamentoId)
{
return _empregadoRepositorio.Get(e => e.DepartamentoId == departamentoId).ToList();
}
public List<Empregado> Get_EmpregadoInfo(int ID = -1)
{
if (ID == -1)
{
//retorna todos os Empregados
return _empregadoRepositorio.GetTodos().ToList();
}
else
{
//retorna um determinado Empregado pelo seu ID
return _empregadoRepositorio.Get(p => p.EmpregadoId == ID).ToList();
}
}
public void AdicionarEmpregado(Empregado emp)
{
_empregadoRepositorio.Adicionar(emp);
_empregadoRepositorio.Commit();
}
public Empregado Localizar(int id)
{
return _empregadoRepositorio.Find(id);
}
public void ExcluirEmpregado(Empregado emp)
{
_empregadoRepositorio.Deletar(c => c == emp);
_empregadoRepositorio.Commit();
}
public void AlterarEmpregado(Empregado emp)
{
_empregadoRepositorio.Atualizar(emp);
_empregadoRepositorio.Commit();
}
}
}
|
Na classe EmpregadoBLL implementamos métodos para realizar as operações CRUD e selecionar dados usando o Repositorio criado na camada DAL. Eu não implementei um tratamento de exceção nesta classe, farei isso na classe DepartamentoBLL para mostrar como fazer e ai você implementa OK.
Vamos repetir o procedimento acima e criar a classe DepartamentoBLL e definir os métodos relacionados com a entidade Departamento.
Selecione o projeto BLL e no menu PROJECT clique em Add Class;
Informe o nome DepartamentoBLL e clique no botão Add;
A seguir inclua o código abaixo na classe DepartamentoBLL:
using System.Collections.Generic;
using System.Linq;
using Model;
using DAL;
using System;
namespace BLL
{
public class DepartamentoBLL
{
IDepartamentoRepositorio _departamentoRepositorio;
public DepartamentoBLL()
{
try
{
//cria uma instância do repositorio departamento
_departamentoRepositorio = new DepartamentoRepositorio();
}
catch (Exception ex)
{
throw ex;
}
}
public List<Departamento> Get_DepartamentoInfo(int ID = -1)
{
try
{
if (ID == -1)
{
//retorna todos os departamentos
return _departamentoRepositorio.GetTodos().ToList();
}
else
{
//retorna um determinado departamento pelo seu ID
return _departamentoRepositorio.Get(p => p.DepartamentoId == ID).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
public void AdicionarDepartamento(Departamento dep)
{
try
{
_departamentoRepositorio.Adicionar(dep);
_departamentoRepositorio.Commit();
}
catch (Exception ex)
{
throw ex;
}
}
public Departamento Localizar(int id)
{
try
{
return _departamentoRepositorio.Find(id);
}
catch (Exception ex)
{
throw ex;
}
}
public void ExcluirDepartamento(Departamento dep)
{
try
{
_departamentoRepositorio.Deletar(c => c == dep);
_departamentoRepositorio.Commit();
}
catch (Exception ex)
{
throw ex;
}
}
public void AlterarDepartamento(Departamento dep)
{
try
{
_departamentoRepositorio.Atualizar(dep);
_departamentoRepositorio.Commit();
}
catch (Exception ex)
{
throw ex;
}
}
}
}
|
Dessa forma já temos nossa camada de negócios (BLL) pronta para atender as requisições da camada de apresentação.
Na próxima parte do artigo vamos definir a nossa camada de apresentação.
Porque os judeus pedem
sinal, e os gregos buscam sabedoria;
Mas nós pregamos a Cristo crucificado, que é escândalo para os judeus, e loucura
para os gregos.
Mas para os que são chamados, tanto judeus como gregos, lhes pregamos a Cristo,
poder de Deus, e sabedoria de Deus.
1 Coríntios 1:22-24
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: