2012-04-12 57 views
1

我正在使用實體框架4.3.1,我試圖插入一個新的記錄到我的ProductVersion實體是基於。實體框架插入行與複合鍵

ProductVersion實體有2個屬性組成表和ProductOrdinal表的組合主鍵。

每當有人更新產品條目時,我正在創建一個ProductVersion實體並將其傳遞迴我的存儲庫,增加ProductOrdinal屬性,並嘗試將實體添加到上下文中並保存它。

我不斷收到以下錯誤:

The property 'ProductOrdinal' is part of the object's key information and cannot be modified.

既不構成的自動編號的鍵列,我已經註釋在我的POCO的屬性有以下:

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

從異常和您的描述看來,您正在增加現有'ProductVersion'實例上的'ProductOrdinal'屬性並嘗試保存它。 您可能想要做的是從現有實例中創建一個'ProductVersion'的新實例,並增加'ProductOrdinal'屬性並保存新實例。 – alwayslearning 2012-04-12 16:08:03

+0

我會檢查一下。我想你可能是對的。 – Maxmanzero 2012-04-12 16:17:11

+1

你是完全正確的。上下文仍然是打開的,所以當我更新「當前」對象並進行了比較時,我已經更新了相同的對象,並且抱怨我正在嘗試更新已插入的密鑰。 – Maxmanzero 2012-04-12 19:01:12

回答

1

Marc_S他的評論完全正確,爲什麼這不起作用。

從異常和您的描述看來,您似乎正在增加現有'ProductVersion'實例上的'ProductOrdinal'屬性並嘗試保存它。您可能想要做的是從現有實例創建一個「ProductVersion」的新實例,並增加「ProductOrdinal」屬性並保存新實例。