我知道这听起来很荒谬,但我一直在收到错误,告诉我在尝试删除数据库中的记录时无法插入重复的密钥。我的代码是非常基本的
using (var scope = new TransactionScope())
{
this.DataSource.ParameterGroupEntries.DeleteAllOnSubmit(dataBaseParameterEntries);
this.DataSource.SubmitChanges();
this.DataSource.ParameterGroupEntries.InsertAllOnSubmit(localParameterEntries.ToArray());
this.DataSource.SubmitChanges();
scope.Complete();
}
但是在SubmitChanges()
命令后的DeleteAllOnSubmit(dataBaseEntries)
上,我不断收到异常“无法在对象中插入重复键”。我已经尝试将其分解为两个单独的事务,甚至使用带有DeleteOnSubmit()
循环的foreach
甚至删除insert语句。无论如何,我都会遇到这个错误。这真的让我难过,因为我没有插入任何记录,我正在删除它们。有什么建议吗?
更新 删除给我带来麻烦的关键约束似乎有效。但由于我不是数据库的创建者,因此这不是最理想的选择。
答案 0 :(得分:1)
我猜你的种子有问题,可能是种子值与现有的表值不一致。
你应该致电
dbcc checkident(TableName, reseed, Value)
并使值小于当前值。
答案 1 :(得分:0)
您可能需要在事务范围之前检查更改,删除事务范围内的所有内容并仅保留1个SubmitChanges()和scope.complete()以检查更改(插入重复记录密钥)