我有一些带有 ID 列的 DataTables,在 MySQL 服务器端和 ADO.NET 模式端(从 XML 模式文件加载)都启用了 AutoIncrement。我不想在插入行时关心这些 ID,因为它们的唯一用途是拥有表的主键——没有外键引用。但是,当要添加新行时,DataTable 将已经包含行,即 ID 从 1 开始的行已经驻留在 DataTable 中。
ID 列的默认 AutoIncrementSeed 值为 -1,AutoIncrementStep 值为 1(仅保留 Visual Studio 提供的默认值)。如果我只想一次插入两个新行,一切似乎都很好,因为当使用 dataTable.NewRow() 创建时,它们会得到 ID -1 和 0。但如果我想添加第三行,它会得到 ID 1 由 NewRow() 分配。随后,当我想使用 dataTable.Rows.Add(...) 插入新行时会引发 ConstraintException,因为已经有 ID = 1 的行。
我想禁用 ADO.NET 架构的 AutoIncrement 东西不是解决方案,因为那样我仍然必须确保自己在使用 .Rows.Add() 添加行之前 ID 是唯一的
这个问题的简单/优雅的解决方案是什么?现在我无法想象这是一个非常罕见的任务。
谢谢!