我在TransactionScope中使用兩個SQLConnection是(僞)代碼是否正確?使用語句在哪裏完成TransactionScope?
using (TransactionScope ts= new TransactionScope(TransactionScopeOption.RequiresNew))
{
using (SqlConnection connection1 = new SqlConnection(ConnectionString1))
{
(...)
}
using (SqlConnection connection2 = new SqlConnection(ConnectionString2))
{
(...)
}
ts.Complete();
}
還是應該用這個?
using (TransactionScope ts= new TransactionScope(TransactionScopeOption.RequiresNew))
{
using (SqlConnection connection1 = new SqlConnection(ConnectionString1))
{
(...)
using (SqlConnection connection2 = new SqlConnection(ConnectionString2))
{
(...)
ts.Complete();
}
}
}
第一個代碼更好,因爲它允許我在方法中提取命令。但是我擔心的是,在這種情況下,連接是在範圍完成之前處理的,是否將TransactionScope納入足以防止這種情況?
以下Servy建議我已經在第一個示例之後編寫了我的代碼,並且我能夠測試它的行爲如預期的那樣(如果在事務範圍內沒有調用.Complete(),則連接將回滾 – floqui 2013-03-21 08:43:55