/ Transações aninhadas para testes - nhibernate, testes, transações, transactionscope

Transações aninhadas para testes - nhibernate, testes, transações, transactionscope

Eu queria saber se é uma boa prática aninharduas transações? Por exemplo, envolvendo minha transação NHibernate com TransactionScope para o benefício dos testes (certificando-se de que o db anula todas as alterações feitas no teste).

A outra opção é manter as entidades que insiro no banco de dados na memória e excluí-las no final do teste.

Qual é o melhor?

Respostas:

1 para resposta № 1

Primeiro de tudo, nhibernate não suporta transações aninhadas!

TransactionScope no outro lado não irá criar uma nova transação se já houver uma aberta. Se você usar apenas o escopo da transação, ele criará uma nova transação para a conexão.

Se você abrir uma transação dentro do escopo, isso ainda funcionará com o nhibernate.

Voltando à sua pergunta, depende muitoa quantidade de objetos que você cria dentro do TransactionScope. Se se tornar muito, você simplesmente enviará um spam para o log de transações do seu banco de dados. Além disso, o conceito é perfeitamente bem, eu diria.

E uma coisa importante para mencionar, se você usarTransactionScope, e você criar várias sessões / transações com nhibernate, o escopo pode alternar para transações distribuídas que exigem MSDTC para executar no servidor de destino, caso contrário, ele simplesmente falhará.