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...
谢谢大家。
我找到了一个解决方案,那就是当我发现重复键错误第一次出现时。这意味着真正的重复密钥。
我通过以下方式重新建立数据库连接:
dbconn.Dispose();
dbconn = new Entities();
那么这将起作用
多谢!希望这对其他人有帮助