The transaction must be disposed before the connection can be used to execute sql statements

c#, exception, sql-server-2008, transactionscope, winforms

Solution

I solved it by adding the below lines in App.config:

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

and this in Machine.config:

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

As this process takes a very long time greater than 10 minutes, so I found that I need to overwrite this value with a higher one.

Problem

I am getting this error The transaction must be disposed before the connection can be used to execute sql statements. i have an Excel file that contains about 6000 rows and I uploaded these file into Data table in typed dataset, then I am trying to apply my business logic on these rows in dt. The exception throws from the second loop and I have to do two loops; why does this exception occur, and how can I solve it? Here is my code: ``` 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; } ```

Original source