我在 TransactionScope 中使用两个 SQLConnection 这个(伪)代码是否正确?
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 的登记是否足以防止这种情况发生?