【发布时间】:2016-04-17 03:57:46
【问题描述】:
我正在使用实体框架(我认为是 V5),并且目前正在尝试将新行添加到表中。我希望添加到的表具有基于值“PRN”(基本上是唯一的客户 ID)和关联的序列号的复合主键。每次更新此表中的信息时,我们都会为 PRN 插入一个新行并增加序列号。序列号未定义为数据库上的自动递增值或 IDENTITY,因为它不是唯一的 - 序列号仅在每个 PRN 中是唯一的。
当我执行以下代码时,我得到一个 InvalidOperationException:“属性 'DDIPhasedPayment_Seq_Num' 是对象的关键信息的一部分,不能修改。”
如果我只修改主键的 PRN 部分并保存记录(这导致 Seq_Num 的默认值为零),EF 似乎并不介意,但是当我尝试修改另一部分时抛出异常的PK。如何在不破坏 EF 的情况下创建并向该表添加一行?
var nextSequence = GetNextPhasedPaymentSequenceNumber(message.Prn);
var entity = new Practitioner_DDI_PhasedPayment()
{
PRN = message.Prn,
DDIPhasedPayment_Seq_Num = nextSequence,
TSN = message.Tsn,
//........
//Various other fields populated
//........
};
dbContext.Practitioner_DDI_PhasedPayment.Add(entity);
dbContext.SaveChanges();
【问题讨论】:
-
您确定没有更改
GetNextPhasedPaymentSequenceNumber中的PK 值吗?
标签: c# sql-server-2008-r2 entity-framework-5