当您为 SQL 连接、事务和命令创建“using” block 时,众所周知,与 using block 关联的连接、事务或命令在您离开 using 后会自行正确处理堵塞。
如果在这些 block 之一中发生异常,例如在命令 block 中 - 事务是否会自行回滚,或者开发人员是否需要在命令“using” block 中执行 try catch,以及为这次try在catch中添加回滚事务语句?
最佳答案
只要您没有成功调用 Commit,事务就会自动回滚。所以你的 using block 可以看起来像这样,如果在 Commit 之前抛出异常,事务将被回滚。
using (IDbConnection connection = ...)
{
connection.Open();
using (IDbTransaction transaction = connection.BeginTransaction())
{
using (IDbCommand command = ...)
{
command.Connection = connection;
command.Transaction = transaction;
...
}
...
transaction.Commit();
}
}
关于c# - 使用 C# SQL Server 调用在 "Using"范围内自动回滚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388852/