我读的越多,我就越困惑,所以希望有人能提供帮助。我有一个复杂的数据库设置,有时会在更新时产生错误:
“并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条”
我有时会说,因为我无法重新创造条件来持续触发它。我有一个远程 mySQL 数据库通过 DataSource Wizard 连接到我的应用程序,它生成数据集、表和链接的 DataTableAdapters。
我的阅读表明,当有多个打开的数据库连接试图更新同一记录时,会发生此错误?这不应该发生在我的实例中,因为唯一的更新是从我的应用程序中连续进行的。
我想知道它是否与从后台工作人员运行更新有关?例如,我有我的表格更新,例如:
Gi_gamethemeTableAdapter.Update(dbDS.gi_gametheme)
Gi_gameplaystyleTableAdapter.Update(dbDS.gi_gameplaystyle)
Gi_gameTableAdapter.Update(dbDS.gi_game)
但是,它们在后台工作程序中连续运行,因此对此不确定。主线程也等待它完成,并且在此启动之前或之后没有其他数据库操作正在进行。
我确实读过关于进入数据集设计器视图,在 datatableadapter > 高级选项中选择“配置”并将“使用乐观并发”设置为 false。这可能有效(由于错误看似随机的性质,很难说),但是,我想避免这样做的缺点:
- 我有大约 60 张桌子。我不想为每个人都这样做。
- 我有时不得不将 mysql 模式重新导入数据集设计器,或者删除一个表并重新添加它。这显然会失去这个设置,我必须记住可能再次对所有这些设置进行。我也找不到在代码中自动执行此操作的方法。
恐怕我在数据库更新等方面不在代码级别,依赖于 Visual Studio 向导。更改堆栈也有点晚了(例如,不能更改为实体框架等)。
所以我的问题是:
- 什么是/如何找到导致错误的原因?
- 我能做些什么呢?
谢谢