PK重复键错误,但数据库中没有这样的键

本文关键字:错误 PK 数据库 | 更新日期: 2023-09-27 18:35:33

我正在使用.net,C#,LINQ,SQL Server 2012。

这项工作基本上只是将许多数据插入数据库。

我发现我在总共 85,000 行中错过了大约 7,000 行。

然后我去调试,我发现有一些数据带有真正的重复键。

但是他们的大部分键在数据库中不存在,数据库也返回错误作为重复键。

有什么想法吗?

代码是这样的

    try
    {
        resCnt++;
        dbconn.table.AddObject(newRow);
        dbconn.SaveChanges();
    }
    catch (Exception ex)
    {
        Console.WriteLine("DB fail ID:"+ newRow.id);
        List< table> testRepeat=(
            from da in dbconn.table
            where da.id==table.id
            select da
            ).Take(1).ToList();
        if (testRepeat.Count() > 0)
        {
            Console.WriteLine(DateTime.Now+ "Repeated ID: " + table.id+" Saved at "+testRepeat.First().LastModified);
            repeatCnt++;
        }
        else
        {
            Console.WriteLine("!!terrible!!");
        }

有一些 ID:322476,438095 ....拳头322476被释放,所以错误像往常一样说"322476 duplicate key "

但是当我438095 dbconn.SaveChanges();438095不存在它将转到异常部分,内部错误仍然说"322476 duplicate key... "至少应该是"438095重复键...'"

然后我点击变量 row.id,它438095...

PK重复键错误,但数据库中没有这样的键

谢谢大家。

我找到了一个解决方案,那就是当我发现重复键错误第一次出现时。这意味着真正的重复密钥。

我通过以下方式重新建立数据库连接:

                dbconn.Dispose();
                dbconn = new Entities();

那么这将起作用

多谢!希望这对其他人有帮助