早安所有,如何強制TransactionScope跨數據庫調用使用相同的連接?
我有類似以下
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();
}
的DAO方法的代碼有這樣的代碼
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;
}
這裏的問題是,當「Yupdated '返回false,我想'DoSomeUpdateQuery()'被回滾。不幸的是,'DoSomeUpdateQuery()'的改變被提交。我該如何補救?我把一個斷點放到tx.Complete()中,永遠不會調用。有誰知道我能在這裏得到合適的預期行爲嗎?提前感謝任何指針。
乾杯,
〜在聖地亞哥