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

Posted

技术标签:

【中文标题】错误:并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条【英文标题】:Error: Concurrency violation: the UpdateCommand affected 0 of the expected 1 records 【发布时间】:2017-02-13 15:35:33 【问题描述】:

在远离 .Net 类型数据集很长一段时间后,我不得不从事一个遗留项目,但我遇到了

Error: Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

当尝试按 ID 加载单个记录,然后更新该记录中的单个字段时。

【问题讨论】:

【参考方案1】:

我首先排除了其他系统或用户绝对不可能更新导致问题的代码“下方”的记录。

然后我排除了数据类型和舍入不是导致问题的原因,因为我了解不同系统处理浮点数舍入的细微差异可能会导致此报告的错误消息。

然后我排除了“可空”字段没有引起问题。

事实证明,这是我自己在存储过程中犯的一个错误。虽然它似乎返回了我加载类型化数据集所需的所有数据,但我没有包含主键字段,所以当我单步执行我的代码时,主字段的值为“-1”。

我认为这会导致数据适配器出现一些问题。我很惊讶该错误表现为并发问题。我本来希望在没有密钥来识别记录的情况下尝试更新记录的信息更丰富!

更正我的“选择 ID”存储过程以返回 ID 字段以及所有更多有趣字段解决了在适配器上调用 Update 方法时的问题。 p>

【讨论】:

以上是关于错误:并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条的主要内容,如果未能解决你的问题,请参考以下文章

C# System.Data.SQLite:并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条

从 C# 应用程序更新 MS Access 数据库中新添加的记录时,“并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条”

Mono C# SQL 更新“并发冲突”

如何通过存储过程和 DatagridView 更新键填充值?

错误:当传递带有修改行的 DataRow 集合时,更新需要有效的 UpdateCommand

服务化与分布式事务冲突解析