我在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