使用代码:
hello
example
one
cheerio
another example
two
如果我们拨打CallSP,可能会超时。如果超时,我们在尝试Complete()事务时会收到错误。
交易已中止。 | System.Data.SqlClient.SqlException(0x80131904):COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION。
有什么方法可以构建这个,这样我们就可以保持在事务中运行CallSP的加速优势,而且如果CallSP以不再导致事务的方式失败,我们就不会尝试完成它打开完成?
答案 0 :(得分:0)
不是在scope.Complete()
子句中调用finally{}
,而是在try{}
子句中调用它。
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, new System.TimeSpan( 0, 15, 0 ) ))
{
try
{
for (int i=0; i<10000; i++)
{
dataContext.CallSP( i );
}
scope.Complete();
}
catch (Exception e)
{
log( e );
}
}
如果您输入TransactionScope
子句,catch{}
将自动中止,因此在退出scope.Complete()
子句之前不会调用using{}
。