谁能解释OracleBulkCopyOptions.Default 和OracleBulkCopyOptions.UseInternalTransaction之间的区别以及如果两者之间发生任何批量插入错误,我如何回滚所有记录。
我正在使用OracleBulkCopy向 Oracle 数据库批量插入(记录范围从 100000 到 500000 不等)。我的要求是所有记录都应该插入数据库,或者没有记录应该插入数据库(回滚所有记录)。我将 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;
}