必须先处理事务,然后才能使用连接执行sql语句

时间:2012-06-28 16:25:40

标签: c# winforms sql-server-2008 exception-handling transactionscope

我收到此错误

  

必须先处理事务,然后才能使用连接执行sql语句。

我有一个包含大约6000行的Excel文件,我将这些文件上传到类型化数据集中的数据表中,然后我尝试在dt中的这些行上应用我的业务逻辑。

从第二个循环抛出异常,我必须做两个循环;为什么会发生这种异常,我该如何解决?

这是我的代码:

try
{
    using (TransactionScope scope = SysInfo.BeginTransaction(IsolationLevel.Serializable))
    {

        //Here is my Typed dataset

        //Method Looping through row in Datatable & Calling DB

        //another Method Looping through row in Datatable & Calling DB

        scope.Complete();
    }
}
catch (Exception ex) { throw ex; }   

1 个答案:

答案 0 :(得分:7)

我通过在App.config中添加以下行来解决它:

<configuration>
    <system.transactions>
        <defaultSettings timeout="00:01:30" />
    </system.transactions>
</configuration> 

,这在Machine.config中:

<configuration>
    <system.transactions>
        <machineSettings maxTimeout="00:01:30" />
    </system.transactions>
</configuration>

由于这个过程需要很长时间超过10分钟,所以我发现我需要用更高的值覆盖这个值。