实体框架使用复合键插入行

时间:2012-04-12 13:50:10

标签: entity-framework composite savechanges

我正在使用Entity Framework 4.3.1,我正在尝试将新记录插入到我的ProductVersion实体所基于的表中。

ProductVersion实体有2个属性构成名为ProductIdProductOrdinal的表的复合主键。

每当有人更新产品条目时,我都会创建并将ProductVersion实体传递回我的存储库,递增ProductOrdinal属性,并尝试将该实体添加到上下文并保存。

我一直收到以下错误:

  

属性' ProductOrdinal'是对象关键信息的一部分,不能修改。

组成密钥的列都不是自动编号,我在POCO中注释了以下属性:

[Key, Column("PROD_Ordinal", Order=2), DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ProductOrdinal { get; set; }

1 个答案:

答案 0 :(得分:2)

Marc_S完全正确地评论了为什么这不起作用。

从异常和您的描述中,您似乎正在递增现有“ProductVersion”实例上的“ProductOrdinal”属性并尝试保存它。你可能想要做的是从现有实例创建一个'ProductVersion'的新实例,并增加'ProductOrdinal'属性并保存新实例。