我有一个过程Proc1调用另一个过程Proc2,并与“BEGIN TRANSCTION” 如果我在第二个过程中得到一个错误,它将回滚这两个过程。好!在存储过程回滚vs回滚在C#代码
但我的C#代码中,我也有这个
...
dbCommand.Transaction.Commit();
dbCnn.Close();
}
catch (Exception ex)
{
if (dbCommand.Transaction != null)
**dbCommand.Transaction.Rollback();**
if (dbCnn.State == ConnectionState.Open)
dbCnn.Close();
throw ex;
}
是否 “dbCommand.Transaction.Rollback();”知道我在谈论哪个交易?如果我有两个事务吃了同样的过程,没有标签,那么C#回滚正确的事务会是一个问题吗?
没有“两次交易”这样的事情 - 您可以随心所欲地开始交易,如果您愿意,可以获得@@ TRANCOUNT为500,但是如果您执行一次ROLLBACK,它们将全部回滚。就我个人而言,我将事务控制保存在存储过程中 - 我发现很少有C#应用程序需要参与的情况。 – 2014-10-30 13:38:21