违反PRIMARY KEY约束无法插入重复键错误?

时间:2016-01-10 07:50:06

标签: javascript c# jquery sql asp.net-mvc-4

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

TaxField Table

Saving Format

所以我决定将默认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约束&#39; PK_TaxInfoTaxFiled&#39;。无法在对象&#39; dbo.TaxInfoTaxFiled&#39;中插入重复键。 声明已经终止。

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

提前谢谢..

1 个答案:

答案 0 :(得分:0)

您的taxinfotaxfieldID将始终是相同的GUID,这就是为什么您会收到该错误的原因,也不应将主键插入数据库表中,而可以像这样创建sql表

 
Create table TaxField
(
 TaxInfoTaxFiled INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
 TaxFieldID varchar(50),
FieldValue varchar(50)
)

or if you really want to use a Guid
Create table TaxField
(
 ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
 TaxInfoTaxFiled UNIQUE DEFAULT GUID(),
 TaxFieldID varchar(50),
FieldValue varchar(50)
)

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