Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Emerson

Inserindo em várias tabelas

Recommended Posts

Li em um livro que uma boa maneira de organizar a camada DAL seria criar um CS para cada tabela do banco de dados.

Acontece que estou fazendo uns testes desenvolvendo um sistema de Agenda, onde tenho as tabelas Contato, fone e email.

Quando insiro um contato ele me retorna o seu ID que será utilizado nas tabelas fone e email.

O método que inseri o contato fica da seguinte maneira:

 

Instancio o SqlConnection

Instancio o sqlTransaction

Realizo a inserção na tabela Contato que me retorna o ID

com o ID insiro os dados na tabela fone

com o ID insiro os dados na tabela email

Se tudo tiver OK dou commit no Transaction e encerro a conexão

 

Tudo isso em um único método, que acaba ficando gigante. Tentei organizar a DAL da maneira que li no livro que citei acima, mas eu tinha que ficar abrindo e fechando a conexão e o transaction para cada tabela, o que não está correto pois quando ocorre algum problema na tabela que esta sendo realizada a inserção o rollback é dado somente nela e os registros são inseridos nas demais tabelas.

 

Dei toda essa explicação para perguntar. Qual a melhor maneira de modelar a DAL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Emersom, você pode criar uma Classe pra cada tabela com seus respectivos metodos, e chama-los onde quiser.

POr exemplo.

Chama o método que insere na tabela inicial e retorna o ID e com o ID você chama os outros metodos passando como parametro o id retornado no primeiro metodo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael e Ivan estou desenvolvendo exatamente da maneira como vocês disseram:

 

public int incluir()
{
   Instancio o SqlConnection
   Instancio o sqlTransaction

   try
   {
      Realizo a inserção na tabela Contato que me retorna o ID
      inserirFone(ID) //com o ID insiro os dados na tabela fone
      inserirEmail(ID) //com o ID insiro os dados na tabela email

      Se tudo tiver OK dou commit no Transaction e encerro a conexão
   }
   catch
   {
      Caso ocorra algum problema dou rollback no Transaction
   }
   finally
   {
      fecho a conexao
   }
}

A questão é como utilizar nos métodos inserirFone e inserirEmail o Transaction que instaciei no método incluir?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.