0

我知道这听起来很荒谬,但我不断收到错误消息,告诉我在尝试删除数据库中的记录时无法插入重复键。我的代码非常基本

            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甚至删除插入语句。无论如何,我都会收到此错误。这真的难倒我,因为我没有插入任何记录,我正在删除它们。有什么建议吗?

更新: 删除给我带来麻烦的关键约束后似乎有效。但是由于我不是数据库的创建者,所以这并不是最理想的选择。

4

2 回答 2

1

我猜你的种子有问题,可能是种子值与现有表值不同步。

你应该打电话

dbcc checkident(TableName, reseed, Value)

并使 value 小于当前值。

于 2013-06-25T15:31:04.213 回答
0

您可能需要在事务范围之前检查更改,删除事务范围内的所有内容,只留下 1 个 SubmitChanges() 和 scope.complete() 来检查更改(插入重复记录键)

于 2013-06-25T16:02:31.537 回答