2
我嘗試使用ADO.NET和事務實現簡單的重試邏輯。 的代碼示例:ADO.NET重試一個sql連接內的事務
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;
}
}
是否還好一個連接中創建另一個事務的前一個被rollbacked後?
預先感謝您!
@Anderi,它取決於目的,如果一個事務對另一個事務是不相關的,那麼這兩個事務必須處於單個提交中,否則更好地鬆散地耦合它們。 –
@HameedSyed,在try部分我想每次調用相同的邏輯。有時它會崩潰(例如死鎖),我想要回滾已經完成的操作,並在新事務中再次重試相同的命令。據我的理解,我可以做到。謝謝! –