在TransactionScope中连续两次更新OracleDataAdapter

本文关键字:两次 更新 OracleDataAdapter TransactionScope 连续 | 更新日期: 2023-09-27 18:14:31

我需要执行一些插入指令从一个类型化数据集到一组表在我的Oracle DB

我这样做:

OracleDataAdapter da1 = new OracleDataAdapter();
da1.InsertCommand = previouslyInitializedCommand;
OracleDataAdapter da2 = new OracleDataAdapter();
da2.InsertCommand = anotherCommand()
...
using (TransactionScope ts = new TransactionScope())
using (OracleConnecction conn = new OracleConnection(connString))
{
    da1.InsertCommand.Connection = conn;
    da2.InsertCommand.Connection = conn;
    da1.Update(dataset.Table1);
    da2.Update(dataset.Table2);
    ts.Complete();
}

第二次更新没有发生,因为第一次更新将Table2的行状态更改为"未修改"。有人知道为什么会这样吗?

在TransactionScope中连续两次更新OracleDataAdapter

现在可以运行了…

我做了两件事:

  1. 从数据集设计器更改了连接表1到表2的关系的接受/拒绝规则从Cascade到None。

  2. 我已经设置了UpdatedRowSource为Both