我在视图中有六个字段 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。
所以我决定将默认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,所以只有我得到这个错误我认为如此。为此我该怎么办?请帮我纠正这个问题?
提前谢谢..
答案 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) )
这样,您可以避免插入主键重复项。