【发布时间】:2010-07-27 16:01:24
【问题描述】:
大家早上好,
我有类似下面的代码
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()。有谁知道我如何在这里获得适当的所需行为?提前感谢您的任何指点。
干杯,
~ck 在圣地亚哥
【问题讨论】:
标签: c# sql-server transactions try-catch transactionscope