2012-04-12 4 views
1

Ich benutze Entity Framework 4.3.1 und ich versuche, einen neuen Datensatz in die Tabelle einfügen meine ProductVersion Einheit basiert auf. Die Einheit ProductVersion hat 2 Eigenschaften, die einen zusammengesetzten Primärschlüssel für die Tabelle ProductId und ProductOrdinal bilden.Entity Framework Einfügen von Zeile mit Composite-Schlüssel

Immer wenn jemand einen Produkteintrag aktualisiert, erstelle und übergebe ich eine ProductVersion Entität zurück an mein Repository, inkrementiere die ProductOrdinal Eigenschaft und versuche, die Entität dem Kontext hinzuzufügen und zu speichern.

Ich halte die folgende Fehlermeldung erhalten:

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

Weder der Spalten, die den Schlüssel bilden, sind automatischen Nummerierung und ich habe die Eigenschaften in meiner POCO kommentiert mit den folgenden:

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

Aus der Ausnahme und Ihrer Beschreibung scheint es, dass Sie die Eigenschaft 'ProductOrdinal' für die vorhandene 'ProductVersion' -Instanz erhöhen und versuchen, sie zu speichern. Wahrscheinlich möchten Sie eine neue Instanz von 'ProductVersion' aus der vorhandenen Instanz erstellen und die Eigenschaft 'ProductOrdinal' inkrementieren und die neue Instanz speichern. – alwayslearning

+0

Ich werde das überprüfen. Ich denke du magst Recht haben. – Maxmanzero

+1

Sie waren absolut richtig. Der Kontext war noch offen. Als ich das "aktuelle" Objekt aktualisiert und meinen Vergleich durchgeführt hatte, hatte ich das gleiche Objekt aktualisiert und es beschwerte sich, dass ich versuchte, den Schlüssel, der bereits eingefügt wurde, zu aktualisieren. – Maxmanzero

Antwort

1

Marc_S war genau richtig in seinem Kommentar, warum das nicht funktionierte.

Aus der Ausnahme und Ihrer Beschreibung scheint es, dass Sie die Eigenschaft 'ProductOrdinal' für die vorhandene 'ProductVersion' -Instanz erhöhen und versuchen, sie zu speichern. Wahrscheinlich möchten Sie eine neue Instanz von 'ProductVersion' aus der vorhandenen Instanz erstellen und die Eigenschaft 'ProductOrdinal' inkrementieren und die neue Instanz speichern.

Verwandte Themen