【问题标题】:Cannot insert duplicate key row in object 'dbo.ta_Kullanici' with unique index 'IX_ta_Kullanici'.\r\nThe statement has been terminated无法在具有唯一索引“IX_ta_Kullanici”的对象“dbo.ta_Kullanici”中插入重复的键行。\r\n语句已终止
【发布时间】:2015-05-29 08:46:04
【问题描述】:

我尝试开发一个将数据从 excel 表插入到 SqlServer 的程序。 尝试将数据插入 sqlserver 时出现错误。这是我的错误信息

“无法在对象 'dbo.ta_Kullanici' 中插入重复的键行 唯一索引 'IX_ta_Kullanici'。\r\n语句已终止。"

ID 在我的表中是唯一且自动递增的。

感谢您的帮助! :)

我的部分代码在这里;

 if (!check)
                    {
                        kul = new ta_Kullanici();
                        hata = new KullaniciHata();
                        hata.AdSoyad = kullanicilar.Rows[i][7].ToString() + " " + kullanicilar.Rows[i][8].ToString();
                        hatalar.Add(hata);

                        kul.kul_ad = kullanicilar.Rows[i][7].ToString();
                        kul.kul_soyad = kullanicilar.Rows[i][8].ToString();
                        foreach (var bolge in bolgeler)
                        {
                            if (kullanicilar.Rows[i][1].ToString().ToLower().IndexOf(bolge.bolge_ad.ToLower()) != -1)
                            {
                                kul.kul_bolge_Id = bolge.bolge_Id;
                            }
                        }
                        kul.kul_ikTar = DateTime.Now;
                        kul.kul_statu = true;
                        kul.kul_guid = Guid.NewGuid().ToString();
                        kul.kul_ikIP = "127.0.0.1";
                        kul.kul_ik_kul_Id = 5;
                        kul.kul_TCKNo = kullanicilar.Rows[i][9].ToString();
                        kul.kul_kulAd = kullanicilar.Rows[i][6].ToString();
                        kul.kul_tip_enm = 2;
                        if (!string.IsNullOrWhiteSpace(kullanicilar.Rows[i][9].ToString()))
                        {
                            kul.kul_sifre = kullanicilar.Rows[i][9].ToString();

                        }
                        else
                        {
                            kul.kul_sifre = "123123";
                        }

                        checkList.Add(kul);
                        db.ta_Kullanici.Add(kul);
                        db.SaveChanges();
                        hatalar.Remove(hata);
                    }

【问题讨论】:

  • 引用数据库中主键的索引的名称是什么?默认情况下,它类似于 PK_dbo.Kullanici。似乎违反了另一个索引,而不是主键
  • 在数据库的哪个列索引IX_ta_Kullanici上创建,该列不能重复?
  • 是的。但这不是强制性的,只有一列,几列也可以

标签: c# entity-framework sql-server-2012


【解决方案1】:

查看有问题的表 dbo.ta_Kullanici 并查看名为 IX_ta_Kullanici 的索引位于哪一列。

相关索引是唯一索引,这意味着它不允许列有任何重复值

请记住,此索引可以在表中的任何列上,并且不限于主键。

【讨论】:

    【解决方案2】:

    所以基本上问题是该列具有唯一键的索引,该索引的作用是确保重复值不会在列上重复,要改变这一点,您可以去 Management Studio , 转到有该列的表,右键单击该列并单击进行修改。将出现一个屏幕,显示所有列。右键单击列旁边的小框并选择索引/键。然后你会看到一个 IsUnique 属性。将其设置为“否”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多