我正在使用List
對象來包含我的主表與我的主表具有一對多關係的輔助表中的項目。主表的PK
用作次表上的FK
字段。違反PRIMARY KEY約束。無法插入重複密鑰
不過,我得到這個錯誤時,記錄嘗試保存
Violation of PRIMARY KEY constraint 'PK_ClearinghousePartners'. Cannot insert duplicate
key in object 'dbo.ClearinghousePartners'. The duplicate key value is (0)
主表型號
僅供參考 - 此表中包含的字段的大量所以我只是展示所述List
public partial class AgentTransmission
{
.
.
public virtual List<ClearinghousePartners> ClearinghousePartners { get; set; }
}
二次表型號
public partial class ClearinghousePartners
{
public int Id { get; set; }
public string ClearingHouseName { get; set; }
public string TradingPartnerName { get; set; }
public Nullable<System.DateTime> StartDate { get; set; }
public int AgtTransId { get; set; } //FK field corresponds to 'Id' on AgentTransmission
public virtual AgentTransmission AgentTransmission { get; set; }
}
控制器
當模型回發到控制器保存例外在這方面的代碼被拋出。這是一個實例,其中AgentTransmission
對象是全新的並需要添加到數據庫中。 ClearinhousePartners
集合中的每個項目也是如此。
每個都是全新的ClearinghousePartners
項目,其中Id
和AgtTransId
字段沒有值。我需要AgentTransmission
對象先保存,因此可以創建Id
字段,然後插入ClearinghousePartners
對象中的AgtTransId
字段。
agenttransmission.LastChangeDate = DateTime.Now;
agenttransmission.LastChangeOperator = Security.GetUserName(User);
db.AgentTransmission.Add(agenttransmission);
db.SaveChanges(); //Exception thrown here
查看
<fieldset id="ClearinghousePartners">
<legend>Clearinghouse Partners</legend>
<center>
<table>
<thead>
<th>Clearinghouse Name</th>
<th>Trading Partner Name</th>
<th>Start Date</th>
</thead>
<tbody>
@for (int i = 0; i < Model.ClearinghousePartners.Count(); i++)
{
<tr align="center">
@Html.HiddenFor(model => model.ClearinghousePartners[i].Id)
@Html.HiddenFor(model => model.ClearinghousePartners[i].AgtTransId)
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].ClearingHouseName, new { style = "width: 100px" })</td>
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].TradingPartnerName, new { style = "width: 100px" })</td>
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].StartDate, new { style = "width: 100px" })</td>
</tr>
}
</tbody>
</table>
</center>
</fieldset>