Я попытался откатить внешнюю транзакцию, а также попытался прервать OracleBulkCopy (), но он все еще вставил все строки. Кто-нибудь знает, как это сделать?
Случай 1: не сработало. Все строки вставлены в любом случае.
OracleConnection connection = new OracleConnection(ConnectionString);
connection.Open();
OracleTransaction trans = connection.BeginTransaction();
OracleBulkCopy bulkCopy = new OracleBulkCoopy(connection,OracleBulkCopyOptions.Default);
bulkCopy.DestinationTableName = "SomeTable";
bulkCopy.WriteToServer(SomeDataTable);
trans.Rollback();
Случай 2: используйте OracleRowsCopiedEventHandler
делегат и в этом обратном вызове установите Oracle.RowsCopiedEventsArgs.Abort
на true
, а затем откат транзакции в блоке перехвата. Тоже не сработало. Кажется, что любая вставка перед вызовом Abort уже есть в базе данных. OracleBulkCopy()
уступает SqlBulkCopy()
, как я его вижу.
Спасибо.
Хоанг