我尝试使用ADO.NET和事务实现简单的重试逻辑。 代码示例:
using(SqlConnection conn = new SqlConnection(m_connection))
{
conn.Open();
bool committed = false;
Exception exception = null;
for (int i = 0; i < s_attempts; i++)
{
SqlTransaction tran = conn.BeginTransaction();
try
{
// different commands here..
tran.Commit();
committed = true;
break;
}
catch (Exception ex)
{
exception = ex;
tran.Rollback();
}
}
if (!committed && exception != null)
{
throw exception;
}
}
在前一个连接被回滚后,是否可以在一个连接中创建另一个事务?
提前谢谢!
答案 0 :(得分:1)
如果所有事务都已提交或回滚,则没有理由不能继续在同一连接上创建事务。
我会问为什么第一次尝试失败了,我假设你会在每次提交交易的尝试之间放一些延迟(可能会增加)。