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

时间:2013-10-15 00:24:07

标签: c# sql-server linq primary-key

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

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

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

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

但是他们的大多数密钥在DB中都不存在,而DB也会将错误作为重复密钥返回。

请问任何想法?

代码就像这样

    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 "像往常一样

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

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

1 个答案:

答案 0 :(得分:0)

谢谢你们所有人。

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

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

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

然后这将起作用

非常感谢! 希望这会有助于其他人