2 votes

portée de la transaction .net bloquer la deuxième transaction

Dans mon application, j'ai le modèle suivant :

using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required))
{
    Function1();
    Function2();
    Function3();
}

Mon problème est que Function2 appelle une autre fonction qui se connecte à une autre DB ... et la transaction devient distribuée et je reçois une exception.

Existe-t-il un moyen dans le code qui me permette de faire un appel à la base de données qui ne fait pas partie de la transaction en cours ? Mon code dans Function2 fait juste une lecture ... donc je ne veux pas faire partie de la transaction en cours.

Merci, Radu

3voto

Richard Points 54016

Autour de function2 vous pourriez créer une nouvelle transaction avec TransactionScopeOption.RequiresNew ce qui l'oblige à faire l'objet d'une transaction distincte. Comme une seule ressource (l'autre base de données) sera utilisée dans cette transaction, elle ne devrait pas être distribuée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X