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; }
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
Ich werde das überprüfen. Ich denke du magst Recht haben. – Maxmanzero
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