代码之家  ›  专栏  ›  技术社区  ›  ProfK

实体框架应用程序中出现错误的重复密钥错误

  •  3
  • ProfK  · 技术社区  · 15 年前

    我有一个使用实体框架模型的ASP.NET应用程序。在导入例程中,使用下面的代码,我在 SaveChanges 调用,但是当异常停止执行时,我可以查询数据库中明显重复的字段,并且不存在先前的记录。

            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)
                    {
                    }
                }
            }
    

    更新: 对于employee 1546,我捕获一个有效的重复密钥异常;他有一个重复的银行账户。然后,下一个雇员是1548(1547真的不见了)。1548有一个唯一的银行帐户,但是对于1548,我得到了SaveChanges上的重复密钥异常。一个概要文件显示SaveChanges仍在尝试插入1546,实际上它仍然有一个重复的银行帐户。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Craig Stuntz    15 年前

    您的原始对象(具有“真实”重复错误的对象)仍在上下文中。做 SaveChanges

    推荐文章