TRANSACTION EM 3 CAMADAS

 Tópico anterior Próximo tópico Novo tópico

TRANSACTION EM 3 CAMADAS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#477045 - 07/10/2017 12:30:53

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


olá amigos, tudo bem?

seguindo na saga sombria do POO.

estou migrando um projeto para POO 3 camadas,

estou tentando não misturar as camadas.

porem como trabalhar  com Transaction ?



tenho que gerar o ID  ( o iD é composto,  não da pra ser automático)
tenho que gravar em varias tabelas , algumas não estão na classe.

se algo der errado,  preciso abortar tudo.

desde ja agradeço



#477046 - 07/10/2017 13:51:45

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Quando eu preciso realizar esse tipo de operação, onde envolvem várias outras micro-operações com outras entidades, eu faço isso na camada BLL.
Claro, que na sua camada de dados, seus os métodos precisarão ter sobrecargas para aceitar objetos de transações também.

Caso esteja usando alguma ferramenta ORM, como o Entity Framework... Você pode passar o contexto como parâmetro, e no final do BLL dá um SaveChanges.

Talvez algum colega que tenha mais afinidade com Design Patterns possa te orientar melhor, mas atualmente, tenho feito dessa forma.

Abraços!

"Cansei de frases intelectuais" - Eu mesmo


#477052 - 07/10/2017 23:40:49

JABA
CABO FRIO
Cadast. em:Agosto/2005


De acordo com o livro Domain-Driven Design do Eric Evans, isso deve ser feito na Camada de Aplicação.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#477064 - 09/10/2017 13:31:34

MAXCIM
GUARULHOS
Cadast. em:Dezembro/2003


não estou usando  ORM , EF...

acho estranho que tenho que levar driver, conexão e outros dados para camada de  aplicação

na BLL  tbm não teria o driver de conexão e nem acesso   mysqlcommand.transaction



#477065 - 09/10/2017 14:01:40

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
O que você poderia fazer é usar o padrão factory. Sua conexão seria uma classe, que você instancia e ela vai agir muito parecido com o contexto de dados do EF. Então ficaria:

using (MinhaFactory cn = new MinhaFactory())
{
    cn.IniciaTransacao();
    ///faça todas as operações que quer que estejam dentro da transação

    if (nenhumErro)
        cn.Commit();
    else
        cn.Rollback();
}


_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário