PERSISTIR DADOS VIA METODO
bom dia a todos ,
pessoal estou com a seguinte duvida ,
eis que fiz uma tela para cadastro de pedidos , ok .!! tendo feito isso existem os itens do pedido , que sao inserido após a insercao do pedido.ok eis meu problema.
1º tabela tb_pedidos
2º tabela tb_item_pedido
apos a validação dos campos.. no aspx eu chamo a DAO Pedidos e faço o comando insert.
Ex.: ped.Insert(pedido)
depois disso eu faço a validação dos itens do pedido estando todos validados eu chamo a DAO de Itens do pedido e faço a insercao.
Ex.: pi.Insert(item_pedido);
eu coloquei essa instrução dentro de ifs e try catch para diminuir ao maximo a possibilidade de erros na inserção dos itens , porém gostaria de criar ou um método para controlar a transação de quando ele der erro ao inserir os itens eu fazer um roolback e retirar o registro da tabela de pedidos, nao sei como faz.
eu sei realizar a transação dentro da própria DAO porém essa transação soh vai ser feita enquanto eu estiver naquela DAO, eu quero fazer essa transação durar até a inserção dos itens do pedido
pessoal estou com a seguinte duvida ,
eis que fiz uma tela para cadastro de pedidos , ok .!! tendo feito isso existem os itens do pedido , que sao inserido após a insercao do pedido.ok eis meu problema.
1º tabela tb_pedidos
2º tabela tb_item_pedido
apos a validação dos campos.. no aspx eu chamo a DAO Pedidos e faço o comando insert.
Ex.: ped.Insert(pedido)
depois disso eu faço a validação dos itens do pedido estando todos validados eu chamo a DAO de Itens do pedido e faço a insercao.
Ex.: pi.Insert(item_pedido);
eu coloquei essa instrução dentro de ifs e try catch para diminuir ao maximo a possibilidade de erros na inserção dos itens , porém gostaria de criar ou um método para controlar a transação de quando ele der erro ao inserir os itens eu fazer um roolback e retirar o registro da tabela de pedidos, nao sei como faz.
eu sei realizar a transação dentro da própria DAO porém essa transação soh vai ser feita enquanto eu estiver naquela DAO, eu quero fazer essa transação durar até a inserção dos itens do pedido
LUISCAMPANA12 nada impede de você fazer a transação do primeiro insert ai so realizar o comitt quando o insert de itens der certo e em casso de erro no catch você pode dar roll back na transação inicial. O que você pode fazer e usar a mesma conexao para as duas rotinas assim você pode dar roll back para a transação a qq momento;
entao oq eu quero fazer eh exatamente isso .. só que .!!
como eu uso a mesma conexao sendo q elas estao em DAO[ô]s diferentes é possivel ?
se sim vc pode me dar uma força ?
como eu uso a mesma conexao sendo q elas estao em DAO[ô]s diferentes é possivel ?
se sim vc pode me dar uma força ?
Não sei como você fez mais e possivel pois verifique se vc tem a opção BeginTransaction diponivel e depois no fim se tudo der certo vc usa o commit ou o rollback ..
Aqui tem um exemplo de uso ... creio que como os DAOs usam a mesma conexão no rollback ele desfaz tudo que usou aquela conexão idependente do DAO usado
Olha um exemplo de uso legal
http://www.macoratti.net/vbn5_trt.htm
Aqui tem um exemplo de uso ... creio que como os DAOs usam a mesma conexão no rollback ele desfaz tudo que usou aquela conexão idependente do DAO usado
Olha um exemplo de uso legal
http://www.macoratti.net/vbn5_trt.htm
então eu encontrei esse exemplo na net .!
mais o problema é que neste exemplo ele faz todo o uso na própria DAO, o que acontece é que em cada dao ele faz a conexão e dps fecha e retorna o valor .!
no caso aqui são duas DAOS e oq eu consigo fazer seguindo este exemplo é inserindo cada transaction em cada dao .. sendo que na vdd oq eu estou buscando eh ele aguardar uma enquanto executa a outra.! =/
mais o problema é que neste exemplo ele faz todo o uso na própria DAO, o que acontece é que em cada dao ele faz a conexão e dps fecha e retorna o valor .!
no caso aqui são duas DAOS e oq eu consigo fazer seguindo este exemplo é inserindo cada transaction em cada dao .. sendo que na vdd oq eu estou buscando eh ele aguardar uma enquanto executa a outra.! =/
O que eu faria:
Um DAO especÃfico que recebe a entidade pai(contendo uma propriedade List<T> para todos os filhos) e seguir esse fluxo nela:
- Abre conexão
- Inicia transação
- Inicia tratamento de exceções(try...catch)
- Insere pai
- Insere filhos
- Trata exceção e faz rollback quando necessário
- Comitt transação
- Fecha conexão
Se você não puder fazer nesses moldes, você vai ter que acrescentar em cada uma das classes pai e filhos, uma propriedade/field que vai receber a transação e outra para conexão. Acho essa alternativa bem mais trabalhosa e com mais propensão à erros.
Um DAO especÃfico que recebe a entidade pai(contendo uma propriedade List<T> para todos os filhos) e seguir esse fluxo nela:
- Abre conexão
- Inicia transação
- Inicia tratamento de exceções(try...catch)
- Insere pai
- Insere filhos
- Trata exceção e faz rollback quando necessário
- Comitt transação
- Fecha conexão
Se você não puder fazer nesses moldes, você vai ter que acrescentar em cada uma das classes pai e filhos, uma propriedade/field que vai receber a transação e outra para conexão. Acho essa alternativa bem mais trabalhosa e com mais propensão à erros.
vou dar inicio nesse processo e qlqr duvida posto novamente obrigado
KERPLUNK isso que eu quiz dizer sem desenhar kkkkk valeu !!!
Tópico encerrado , respostas não são mais permitidas