违反PRIMARY KEY约束无法插入重复的密钥错误

本文关键字:密钥 错误 插入 PRIMARY KEY 约束 违反 | 更新日期: 2023-09-27 18:29:36

我的视图中有六个字段TinNo、CstNo、PanNo、CinNo、ServiceTaxNo、ExciseRegNo。每个字段都有默认的Guid,例如TinNo表示(TinNo=FD713788-B5AE-49FF-8B2C-F311B9CB0CC4)。我需要将这六个字段保存在TaxInfoTaxField表的同一列中,但不在同一行和同一单元格中。TaxInfoTaxFiled表包含TAXINFOTAXFIELDID、TAXFIELDDID、FIELDVALUE,也就是说,我需要将这六个字段值(在视图中输入)保存在FIELDVALUE列中,并将它们的id保存在TAXFIELDID栏中。它需要逐行保存。所以我决定把默认的guid放在一个列表中,把字段放在另一个列表,然后调用我们想要的地方。在TaxInfoTaxFieldID中,每一行都有新的guid。

TaxField表

保存格式

所以我决定把默认GUID放在一个列表中,把6个字段放在另一个列表中

 ArrayList objValue = new ArrayList();
{
    objValue.Add(TITFVM.TinNo);
    objValue.Add(TITFVM.CstNo);
    objValue.Add(TITFVM.PanNo);
    objValue.Add(TITFVM.CinNo);
    objValue.Add(TITFVM.ExciseRegNo);
    objValue.Add(TITFVM.ServiceTaxNo);
   }
         List<Guid> LG = new List<Guid>();
         LG.Add(new Guid("FD713788-B5AE-49FF-8B2C-F311B9CB0CC4"));
         LG.Add(new Guid("64B512E7-46AE-4989-A049-A446118099C4"));
         LG.Add(new Guid("376D45C8-659D-4ACE-B249-CFBF4F231915"));
         LG.Add(new Guid("59A2449A-C5C6-45B5-AA00-F535D83AD48B"));
         LG.Add(new Guid("03ADA903-D09A-4F53-8B67-7347A08EDAB1"));
         LG.Add(new Guid("2F405521-06A0-427C-B9A3-56B8931CFC57"));

      var taxinfotaxfieldID = Guid.NewGuid();
      var listFiled = new List<TaxInfoTaxFiled>();
     for (var item = 0; item < objValue.Count; item++)
        {
      TaxInfoTaxFiled taxInfoObj = new TaxInfoTaxFiled()
      {
  TaxInfoTaxFieldID = taxinfotaxfieldID,
    TaxFieldID = new Guid(LG[item].ToString()),
     FieldValue = objValue[item].ToString()
     };
     listFiled.Add(taxInfoObj);
      db.TaxInfoTaxFileds .Add(taxInfoObj);
       db.SaveChanges();
     }
  return View();
    }

一切都很好,但第二个循环我有一个错误违反PRIMARY KEY约束"PK_TaxInfoTaxFiled"。无法在对象"dbo.TaxInfoTaxFiled"中插入重复的键。语句已终止

在TaxInfoTaxFieldID中,它为所有迭代计算相同的id,所以只有我得到了这个错误,我认为是这样。为此,我该怎么办?请帮我纠正这个问题?

预付款谢谢。。

违反PRIMARY KEY约束无法插入重复的密钥错误

您的taxinfotaxfieldID将始终是相同的guid,这就是您出现该错误的原因。此外,您不应将主键插入数据库表中,您可以创建类似的sql表

创建表TaxField(TaxInfoTaxFiled INT NOT NULL IDENTITY(1,1)主键,TaxFieldID varchar(50),字段值varchar(50))或者如果你真的想使用Guid创建表TaxField(ID INT NOT NULL IDENTITY(1,1)主键,TaxInfoTaxFiled唯一默认GUID(),TaxFieldID varchar(50),字段值varchar(50))

这样可以避免插入主键重复项。