Bonjour à tous,Comment puis-je forcer TransactionScope à utiliser la même connexion à travers les appels de base de données?
J'ai un code similaire aux suivantes
try{
using(var tx = new TransactionScope()){
var Xupdated = someDao.DoSomeUpdateQuery(); //this dao uses MS Data ApplicationBlock
var Yupdated = someDao.DoSomeOtherUpdateQuery(); //this dao also uses MS Data ApplicationBlock
if(Xupdated && Yupdated)
{
tx.Complete();
}
}
} catch(Exception ex){
DoSomethingWithTheException();
}
Les méthodes dao ont un code comme celui-ci
try{
var db = DatabaseFactory.CreateDatabase();
var cmd = db.GetStoredProcCommand(someSP);
var retVal = db.ExecuteNonQuery(cmd);
return (retVal > 0);
} catch (SqlException ex){
CustomException custom = new CustomException(ex.Message, ex);
throw custom;
}
Le problème est ici quand « Yupdated 'retourne false, je veux que' DoSomeUpdateQuery() 'soit annulé. Malheureusement, les modifications 'DoSomeUpdateQuery()' sont validées. Comment puis-je remédier à cela? Je mets un point d'arrêt dans et tx.Complete() n'est jamais appelé. Est-ce que quelqu'un sait comment je peux obtenir le comportement désiré approprié ici? Merci d'avance pour les pointeurs.
Cheers,
~ ck à San Diego