我试图回滚外部事务并尝试中止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
,然后回滚catch块中的事务。也没用。似乎在Abort调用之前的任何插入都已经存在于数据库中。 OracleBulkCopy()
不如我所看到的那样SqlBulkCopy()
。
感谢。 晃
答案 0 :(得分:1)
好的,我从Oracle那里得到了答案。目前OracleBulkCopy不支持事务。
答案 1 :(得分:0)
您是否尝试设置OracleBulkCopyOptions.UseInternalTransaction
而不是OracleBulkCopyOptions.Default
,以查看异常InvalidOperationException
是否被引发为documentation声明?