我正在处理一个有趣的情况,我在一个事务中执行许多数据库更新。如果这些更新因任何原因失败,则回滚事务。
IDbTransaction transaction
try {
transaction = connection.BeginTransaction();
// do lots of updates (where at least one fails)
transaction.Commit();
} catch {
transaction.Rollback(); // results in a timeout exception
} finally {
connection.Dispose();
}
我认为上述代码通常被认为是在事务中执行数据库更新的标准模板。
我面临的问题是,虽然正在向SQL Server发出transaction.Rollback(),但它也会在客户端上超时。
是否有区分发出rollback命令的超时和执行完成的命令超时?
提前致谢, 本
答案 0 :(得分:0)
您应该指定特定的捕获量,即查看抛出的不同异常。如果在处理sql命令时出现错误,则应抛出SqlException,以便捕获不同的异常以区分项目。
您还可以捕获并编程
异常 - 尝试提交事务时发生错误。
InvalidOperationException - 事务已提交或回滚。 -要么- 连接断了。
安德鲁