并发冲突: - UpdateCommand影响了预期的1条记录中的0条

时间:2017-01-24 07:47:50

标签: c# dataset dataadapter

我们正在使用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,但那样   改变正在影响删除。该行未删除。

欢迎任何建议。

提前致谢。

此致

1 个答案:

答案 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()