ADO.NET DBConcurrencyException - 尝试更新已删除的行

Posted

技术标签:

【中文标题】ADO.NET DBConcurrencyException - 尝试更新已删除的行【英文标题】:ADO.NET DBConcurrencyException - Trying to update an already deleted row 【发布时间】:2011-05-12 12:24:09 【问题描述】:

当我尝试更新已被另一个进程删除的行而不是忽略已删除的行时,为什么 ADO.NET 会抛出 DBConccurencyException

ADO.NET 中是否有任何可用选项可以忽略这一事实?

我正在使用 SQLCommandBuilder 并将 ConflictOption 设置为 ConflictOption.OverwriteChanges

【问题讨论】:

这是设计使然。为什么不直接处理异常并优雅地进行呢? 您的假设是否有来源:)? msdn.microsoft.com/en-us/magazine/cc163924.aspx 看看图3中的代码... 【参考方案1】:

您可以使用 DataViewRowState 枚举仅选择修改后的行。

var rowsToUpdate =
            dataTable.Select(null, null, DataViewRowState.ModifiedOriginal);

【讨论】:

这是如何工作的? ADO.NET 是否在更新之前立即查询该行? ado.net 在更新前检查状态。如果该行已被删除,则无法再访问它

以上是关于ADO.NET DBConcurrencyException - 尝试更新已删除的行的主要内容,如果未能解决你的问题,请参考以下文章

ADO.NET和.NET的关系?

ADO.NET中主要对象

ADO.NET(课程学习内容)

ado.net总结

Linq和ADO.net的区别

ado.net 和 dapper 之间的交集/联合是啥?