我们正在使用Windows formms。在表单中我们有gridview,我们在其中执行插入新行并一起更新现有行。以下是代码,
OracleDataAdapter adapter = new OracleDataAdapter(sql, conn);
OracleCommandBuilder oraCmdBuilder = new OracleCommandBuilder(adapter);
OracleDataAdapter adap = new OracleDataAdapter();
adap.SelectCommand = new OracleCommand(sql, conn);
adap.InsertCommand = oraCmdBuilder.GetInsertCommand();
adap.InsertCommand.Connection = conn;
adap.UpdateCommand = oraCmdBuilder.GetUpdateCommand();
adap.UpdateCommand.Connection = conn;
adap.DeleteCommand = oraCmdBuilder.GetDeleteCommand();
adap.DeleteCommand.Connection = conn;
adap.UpdateBatchSize = 100;
int i = adap.Update(deltaTable);
InsertCommand
工作正常并在adap.Update(deltaTable);
中抛出异常,如下所示
并发冲突:UpdateCommand影响了预期的1的0 记录。我们尝试在更新方法之前添加acceptchanges,但那样 改变正在影响删除。该行未删除。
欢迎任何建议。
提前致谢。
此致
答案 0 :(得分:0)
我遇到了这个问题以及以下原因
1)在update
查询中,您在更新前已使用原始数据控制数据。要解决从查询中删除此条件。如果删除条件,则转为last modified win
。条件具有@original
前缀。查询如
WHERE CustomerID = @Original_CustomerID OR @Original_CustomerID IS NULL AND customer ID IS NULL
2)在代码Update
之前的任何地方Row.AcceptChanges()