2013-03-13 135 views
0

我正在使用企業庫的數據訪問塊。批量更新:StatementType枚舉值,4無效/無效操作。連接已關閉

我的代碼是幹什麼大批量更新,而是爲我們的客戶之一,它最終總是有以下例外之一失敗:

System.ArgumentOutOfRangeException: The StatementType enumeration value, 4, is invalid. 
Parameter name: StatementType 
at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) 
at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) 
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping) 
at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping) 
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable) 

System.InvalidOperationException: Invalid operation. The connection is closed. at 
System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) at 
System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) at 
System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping) at 
System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping) at 
System.Data.Common.DbDataAdapter.Update(DataTable dataTable) at 
Microsoft.Practices.EnterpriseLibrary.Data.Database.DoUpdateDataSet(UpdateBehavior behavior, DataSet dataSet, String tableName, IDbCommand insertCommand, IDbCommand updateCommand, IDbCommand deleteCommand, Nullable`1 updateBatchSize) at 
Microsoft.Practices.EnterpriseLibrary.Data.Database.UpdateDataSet(DataSet dataSet, String tableName, DbCommand insertCommand, DbCommand updateCommand, DbCommand deleteCommand, UpdateBehavior updateBehavior, Nullable`1 updateBatchSize) at 

回答

1

我已經在網上搜索有一段時間沒有能夠找到這些錯誤意味着什麼或如何解決它們。現在我終於找到了答案,我正在分享它。

錯誤總是在10分鐘後發生。這實際上是一個超時

提高我的價值transactionScope.TransactionOptions.Timeout沒有幫助;檢查MSDTC是否正確配置也沒有幫助。

我把它插入以下工作:

<system.transactions> 
    <machineSettings maxTimeout="20:00:00"/> 
</system.transactions> 

的machine.config文件可以在這裏找到:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 

希望這可以幫助別人,有一天.. 。