Usuário com melhor resposta
CRUD com arquitetura em 4 camadas.

Pergunta
-
Olá,
Levando em conta o seguinte cenário:
Camadas
- Aplicacao.Entidades
- Aplicacao.AcessoDados
- Aplicacao.Negocio
- Aplicacao.Interface
Camada de acesso a dados:
public interface IRepositorio<T> where T : class, new() { void InserirOuAtualizar(T entidade); T SelecionarPorId(int id); List<T> SelecionarTodos(); }
public interface IRepositorioPaciente : IRepositorio<Entidades.Paciente>
{
Entidades.Paciente SelecionarPorEmail(string email);
}class RepositorioPacientesAccess : IRepositorioPaciente
{
public void InserirOuAtualizar(Entidades.Paciente entidade)
{
throw new NotImplementedException();
}
public Entidades.Paciente SelecionarPorId(int id)
{
throw new NotImplementedException();
}
public List<Entidades.Paciente> SelecionarTodos()
{
throw new NotImplementedException();
}public Entidades.Paciente SelecionarPorEmail(string email)
{
throw new NotImplementedException();
}}
class RepositorioPacientesSqlServer : IRepositorioPaciente
public Entidades.Paciente SelecionarPorEmail(string email)
{
public void InserirOuAtualizar(Entidades.Paciente entidade)
{
throw new NotImplementedException();
}
public Entidades.Paciente SelecionarPorId(int id)
{
throw new NotImplementedException();
}
public List<Entidades.Paciente> SelecionarTodos()
{
throw new NotImplementedException();
}
{
throw new NotImplementedException();
}}
Duvida:
Como ficariam os metodos CRUD na camada de negocio? Terei que repetir a assinatura de cada metodo e delegar a operação à camada de acesso a dados?
Acredito que isso seja redundancia.
Respostas
-
Vinicius, eu normalmente sempre uso a mesma assinatura, pois, se trata de um único caminho que você estará percorrendo até o acesso ao banco.
Vamos dar um exemplo simples, digamos que futuramente um outro programador pegue seu código para dar manutenção. Quando se utiliza assinaturas dessa maneira o cara vai bater o olho e saber que elas estão entrelaçadas, isso cabe a você mesmo, daqui a alguns anos você já não vai mais lembrar direito do que é o que no seu código.
Você pode claro utilizar assinaturas diferentes, apenas passando o parâmetro nada te impede.
Espero que ajude.
Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs
- Marcado como Resposta Vinicius_Gonçalves quarta-feira, 18 de dezembro de 2013 12:12
-
Olá Vinicius isso mesmo as vezes o que é feito é sua camada DAO ser genérica então o parametro na sua DAO seria (T entity) por ex, mas qndo vc enviar na sua regra de negócio vc tem q passar a entidade e assim fazer as regras por ex se sua entidade passada na BLL não for nula e assim sempre q enviar para a DAO vc terá a certeza de que seu CRUD será realizado com sucesso !
Eu utilizo este modo passo no BLL por ex BLL(ENTIDADETESTE) a DAO espera DAO(T entidade), pq ela está feita como genérica mas ao compilar é basicamente a mesma coisa só evita de reescrever codigo.
- Marcado como Resposta Vinicius_Gonçalves quarta-feira, 18 de dezembro de 2013 12:11
Todas as Respostas
-
Supondo q vc tenha sua DAO feita ok ! sua camada de negocios vai somente fazer as regras de negocio mesmo ou seja p inserir vc precisa do nome e numero entao vc valida na sua Business e chama a DAO q vai executar seu metodo ! Ou seja regras e validações pois a camada DAO so vai executar ! Espero q tenha entendido.
-
Bom dia Daniel,
Tudo bem, isso eu já entendi. A questão é que terei todas as assinaturas repetidas em duas camadas.
Ex:
AcessoDados.Paciente.InserirOuAtualizar(Entidades.Paciente p);
E na camada de negocio a mesma coisa:
Negocio.Paciente.InserirOuAtualizar(Entidades.Paciente p);
ou
Negocio.Paciente.Salvar(Entidades.Paciente p);
Não existe uma maneira melhor de se fazer isso?
-
Vinicius, eu normalmente sempre uso a mesma assinatura, pois, se trata de um único caminho que você estará percorrendo até o acesso ao banco.
Vamos dar um exemplo simples, digamos que futuramente um outro programador pegue seu código para dar manutenção. Quando se utiliza assinaturas dessa maneira o cara vai bater o olho e saber que elas estão entrelaçadas, isso cabe a você mesmo, daqui a alguns anos você já não vai mais lembrar direito do que é o que no seu código.
Você pode claro utilizar assinaturas diferentes, apenas passando o parâmetro nada te impede.
Espero que ajude.
Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs
- Marcado como Resposta Vinicius_Gonçalves quarta-feira, 18 de dezembro de 2013 12:12
-
Olá Vinicius isso mesmo as vezes o que é feito é sua camada DAO ser genérica então o parametro na sua DAO seria (T entity) por ex, mas qndo vc enviar na sua regra de negócio vc tem q passar a entidade e assim fazer as regras por ex se sua entidade passada na BLL não for nula e assim sempre q enviar para a DAO vc terá a certeza de que seu CRUD será realizado com sucesso !
Eu utilizo este modo passo no BLL por ex BLL(ENTIDADETESTE) a DAO espera DAO(T entidade), pq ela está feita como genérica mas ao compilar é basicamente a mesma coisa só evita de reescrever codigo.
- Marcado como Resposta Vinicius_Gonçalves quarta-feira, 18 de dezembro de 2013 12:11