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 - 尝试更新已删除的行的主要内容,如果未能解决你的问题,请参考以下文章