我有一个使用 Entity Framework 模型的 ASP.NET 应用程序。在导入例程中,使用下面的代码,我在 SaveChanges
调用上收到 AccountNum 的“无法插入重复键”异常,但是当执行因异常而停止时,我可以在数据库中查询明显的重复的字段,并且不存在先前的记录。
using (var ents = new PvmmsEntities())
{
foreach (DataRow row in importedResources.Rows)
{
var empCode = row["EmployeeCode"].ToString();
try
{
var resource = ents.ActivationResources.FirstOrDefault(rs => rs.EmployeeCode == empCode);
if (resource == null)
{
resource = new ActivationResources();
resource.EmployeeCode = empCode;
ents.AddToActivationResources(resource);
}
resource.AccountNum = row["AccountNum"].ToString();
ents.SaveChanges(true);
} catch(Exception ex)
{
}
}
}
更新: 对于员工 1546,我捕获了一个有效的重复键异常;他有一个重复的银行帐户。然后,下一个员工是 1548(1547 确实丢失了)。 1548 有一个唯一的银行帐户,但对于 1548,我在 SaveChanges 上遇到重复 key 异常。配置文件显示 SaveChanges 仍在尝试插入 1546,实际上它仍然有一个重复的银行帐户。
最佳答案
您的原始对象(具有“真实”重复错误的对象)仍在上下文中。稍后添加“好”对象后执行 SaveChanges
尝试保存这两个对象。您必须删除添加到上下文中的“坏”对象或新建一个不添加“坏”对象的新上下文。
关于.net - Entity Framework 应用程序中的虚假重复键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2991534/