2012-03-26 34 views
1

Ich habe eine Tabelle, die einen Primärschlüssel als eine Kombination aus 3 Spalten 1. ACCTNUM (string) 2. SrvID hat (int) 3. RevNum (int)LINQ to Entities „ein Objekt mit dem gleichen Schlüssel existiert bereits in der Object ...“

Was ich in meinem Code tue, ist

  1. ich die Zeile für einen bestimmten ACCTNUM mit max RevNum und dann ich einige Spalten (außer dem Schlüssel ändern) für diese Reihe.
  2. Dann erstelle ich eine neue Zeile (ein neues Objekt des Typs Entität/Tabelle)
  3. Ich verwende AutoMapper, um alle Werte der Zeile aus Schritt 1 oben in der neuen Zeile zuzuordnen, die ich in Schritt 2 oben erstellt habe. Dann ändere ich das RevNum, um es um eins zu erhöhen, um einen eindeutigen Primärschlüssel für diese neue Zeile zu erstellen.

Wenn ich context.TableName.AddObject (newRow) wirft es eine Ausnahme „Ein Objekt mit demselben Schlüssel ist bereits im Object. Die Object können nicht mehrere Objekte mit dem gleichen Schlüssel verfolgen.“

Obwohl ich in der neuen Zeile die RevNum ändern, um einen eindeutigen Schlüssel zu haben. Kann mir bitte jemand sagen, was ich hier falsch mache?

Antwort

1

Ich habe dieses Problem selbst gelöst. Das Problem besteht darin, mithilfe von AutoMapper eine vorhandene Entitätsinstanz (zugeordnete Tabellenzeile) einer neuen Entitätsinstanz zuzuordnen (neue Tabellenzeile wird erstellt).

Ich habe gestoppt AutoMapper verwenden und jede Eigenschaft manuell einzeln zugeordnet und es hat funktioniert gut!

Ein weiterer Beitrag mit einem ähnlichen Problem: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key

Verwandte Themen