OracleBulkCopyOptions的区别.默认和OracleBulkCopyOptions.UseInterna

本文关键字:OracleBulkCopyOptions UseInterna 区别 默认 | 更新日期: 2023-09-27 17:49:42

谁能解释一下OracleBulkCopyOptions。默认值OracleBulkCopyOptions。UseInternalTransaction ,如果批量插入错误发生,我如何回滚所有的记录。

我使用OracleBulkCopy批量插入(记录范围从100000到500000不等)到Oracle数据库。我的要求是要么所有的记录应该插入到db或没有记录应该插入到db(回滚所有记录)。我给25000作为BatchSize &150秒作为BulkCopyTimeout。下面是我当前的代码块。

public bool WriteExcelDataToServerRouteOne(DataTable excelTable)
        {
            var columnMapping = from table in excelTable.Columns.Cast<DataColumn>() select new OracleBulkCopyColumnMapping(table.ColumnName, table.ColumnName);
            using (var bulkcopy = new OracleBulkCopy(ConnectionString, OracleBulkCopyOptions.Default))
            {
                bulkcopy.DestinationTableName = DestinationTable;
                foreach (var mapping in columnMapping)
                    bulkcopy.ColumnMappings.Add(mapping);
                bulkcopy.BulkCopyTimeout = TimeOut.Value;
                bulkcopy.BatchSize = BatchSize.Value;
                bulkcopy.WriteToServer(excelTable);
            }
            return true;
        }

OracleBulkCopyOptions的区别.默认和OracleBulkCopyOptions.UseInterna

OracleBulkCopy不支持所有记录的transaction,只有指定了UseInternalTransaction时才支持批量的transaction。

From OracleBulkCopy Class

  • 如果BatchSize> 0并且指定了UseInternalTransaction大容量复制选项每批大容量复制操作发生在一个事务。如果用于执行大容量复制的连接操作已经是交易的一部分引发InvalidOperationException异常。
  • 如果BatchSize> 0且未指定UseInternalTransaction选项,则以BatchSize大小的批发送行到数据库;但是不执行与事务相关的操作。

对于您的问题:

谁能解释一下两者的区别是什么OracleBulkCopyOptions。违约,OracleBulkCopyOptions。UseInternalTransaction

Default:不为批处理使用事务。UseInternalTransaction:如果批大小大于0,则支持批事务。

看:OracleBulkCopyOptions枚举

相关文章:
  • 没有找到相关文章