【发布时间】:2014-06-09 18:41:47
【问题描述】:
我有一个与 Sql Server 配合使用的应用程序。我有一个 DevExpress 网格,它只显示轮播模式下的记录(我希望这并不重要)。
现在,我已将代码更改为与数据库无关,并且正在测试 MySql。当用户修改记录并接受更改时,我收到以下错误:
并发冲突:UpdateCommand 影响了预期的 1 中的 0 记录
经过一些研究,我得出的结论是问题出在 DATETIME 字段中。我正在使用“允许零日期时间=假;转换零日期时间=真;”在我的 MySql 连接字符串中,因此我可以将默认 DATETIME 值转换为 .Net DateTime 对象。自动生成的 UpdateCommand 包括 where 子句中的每个字段,我猜当 MySql DATETIMEs 设置为默认值时比较失败,因为删除 DATETIME 字段问题就消失了。
我有一个主键列,并且不允许用户修改它,那么发出自定义 UpdateCommand 以使 WHERE 子句中只有一个字段的正确方法是什么?
我当前接受更改的代码:
Dim builder As DbCommandBuilder = m_Conn.CreateCommandBuilder(m_Adapter)
m_Adapter.Update(m_DataTable)
CreateCommandBuilder 是 IDbConnection 上的扩展方法,用于创建具有正确实现 DbCommandBuilder 接口的对象。
【问题讨论】: