Self-Tracking Entitäten - AcceptChanges kann nicht fortgesetzt werden, da das Objekt Schlüssel-Werte-Konflikt mit einem anderen Objekt in der ObjectStateManager

Ich Hänge schon länger mit diesem problem seit über einer Woche jetzt. Hoffentlich jemand kann mich in die richtige Richtung.

Beginne ich mit einer kurzen Beschreibung von meinem schema.

Anlage 1--->1 Adresse *-->1 *-->1 Region *-->1 Land

Paket 1-->* Asset

Nutzung von Self-Tracking-Einheit (STE) + WCF.

Schritte:

  1. Rufen Sie Daten speichern, die für eine Liste von Vermögenswerten.
  2. Rufen Sie Daten speichern, die für eine Liste von Paketen.
  3. Benutzer wählt ein Paket und weisen Vermögen.
  4. Sparen Paket.

In Schritt 2, wird der Aufruf verwendet, eager loading Adressen.

from p in context.Assets.Include("Address.Area.Region.Country")

Dies ist der Fehler, wenn Sie versuchen, um call

context.Packages.ApplyChanges(package)

AcceptChanges nicht weiter, weil
das Objekt ist Schlüssel-Werte-Konflikt mit
ein anderes Objekt in der
ObjectStateManager. Stellen Sie sicher, dass die
Schlüssel eindeutige Werte vor dem Aufruf
AcceptChanges.

BEARBEITEN

Nach Schnüffelei, ich fand, dass dies ein STE Frage. Das problem ist Sie kann nicht beibehalten werden ein Diagramm mit mehreren Instanzen der gleichen Entität-wie dargelegt hier. Hier ist meine Frage.

Wie kann ich eine Person zu meiner Person
Sammlung. Das neue Unternehmen kann
Verwandte Entitäten, die den gleichen
- Schlüssel wie bereits in der Sammlung.
I. e. Fügen Sie ein neues Objekt enthalten kann
die gleiche Adresse, das Gebiet, die region oder
Land Einheit.

Hier meine Einschränkungen:

  1. Ich muss die Navigations-Sammlung, weil es Auswirkungen auf die UI.
  2. Ich kann nicht pre-fetch alle Entitäten, die beteiligt sein werden, da die Datenmenge ist einfach zu groß.
  3. Ich muss in der Lage sein zu nehmen, snap-shots von der Entität jederzeit in Ordnung zu halten, eine Geschichte und es verwenden, um "rückgängig" alle änderungen.

Ich bin mir bewusst, mögliche Lösungen vorgeschlagen, von Diego B Vega, aber die sind nicht die Optionen, die ich verwenden kann für meine Lösung. Hat jemand irgendwelche anderen Ideen?

Sie haben doppelte Schlüssel, was nicht erlaubt ist. Das ist alles kann ich sagen ohne code.
Ich glaube, Sie brauchen, um die post-minimalistische code-Beispiel wo der Fehler Auftritt. Es ist kaum möglich, etwas zu sagen, anstatt Sie haben doppelte Schlüssel aus der info in deinem post.

InformationsquelleAutor Tri Q Tran | 2010-07-28

Schreibe einen Kommentar