如何解决.NET中数据表的并发冲突?
我在VB.NET2.0中使用DataTables,我正在编写代码来处理多用户环境中可能出现的并发冲突。我知道如何捕获并发冲突,但不知道如何在使用DbCommandBuilder生成的INSERT、UPDATE和DELETE命令时解决这些冲突 在我看来,并发冲突发生在五种不同的情况下: 当如何解决.NET中数据表的并发冲突?,.net,database,concurrency,.net,Database,Concurrency,我在VB.NET2.0中使用DataTables,我正在编写代码来处理多用户环境中可能出现的并发冲突。我知道如何捕获并发冲突,但不知道如何在使用DbCommandBuilder生成的INSERT、UPDATE和DELETE命令时解决这些冲突 在我看来,并发冲突发生在五种不同的情况下: 当 正在更新数据库中已同时更新的行 更新已从数据库中同时删除的行 删除数据库中已同时更新的行 删除已从数据库中同时删除的行 插入主键已同时插入数据库的行 我知道如何解决情况1;我发现了几个如何使用DataTable
-TC如果您尝试更新的行被另一个进程删除,并且您需要恢复它,那么您需要捕获在尝试更新时发生的并发异常,并通过将该行插入数据库进行响应:
如果您尝试更新的行已被另一个进程删除,并且您需要恢复该行,那么您需要捕获在尝试更新时发生的并发异常,并通过将该行插入数据库进行响应:
大卫,谢谢你的回复。不幸的是,我发现第二步并不像你描述的那样有效。当我将并发冲突合并到我的表中时,从数据库中删除的行不会从DataTable中删除。此外,您提到,这应该是为了响应并发异常而执行的。但是,我发现并发异常一次只针对一个冲突引发,而合并必须一次对整个表进行。因此,在引发异常时处理违规会导致第二次或第三次违规被错误处理。因此,我得出结论,不能依靠并发异常来启动响应,我必须先发制人地查找违规行为。我弄错了吗?大卫,谢谢你的回答。不幸的是,我发现第二步并不像你描述的那样有效。当我将并发冲突合并到我的表中时,从数据库中删除的行不会从DataTable中删除。此外,您提到,这应该是为了响应并发异常而执行的。但是,我发现并发异常一次只针对一个冲突引发,而合并必须一次对整个表进行。因此,在引发异常时处理违规会导致第二次或第三次违规被错误处理。因此,我得出结论,不能依靠并发异常来启动响应,我必须先发制人地查找违规行为。我弄错了吗?