我正在使用.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 "
像往常一样
但是当我438095
到dbconn.SaveChanges();
时
438095不存在
它将转到异常部分,内部错误仍在说"322476 duplicate key... "
至少应该是“438095重复密钥...”
然后我点击变量row.id,它是438095 ......
答案 0 :(得分:0)
谢谢你们所有人。
我找到了一个解决方案,就是这样 当我发现Duplicate键错误第一次出现时。 这意味着真正的重复密钥。
我通过以下方式重新建立数据库连接:
dbconn.Dispose();
dbconn = new Entities();
然后这将起作用
非常感谢! 希望这会有助于其他人