Was bin ich dabei heraus? (Ein Unternehmen mit der gleichen Identität existiert bereits in diesem EntitySet.)

StackOverflow https://stackoverflow.com/questions/3845174

Frage

Ich bin mit DTOs und Konverter in einem Unternehmen framwork Szenario. Ich möchte eine Einheit aktualisieren. Also habe ich diese Aussage setzen: databasecontext.Tablename(s).Attach(entityobj); Wann immer es wird hier das Programm endet mit diesem Fehler: An entity with the same identity already exists in this EntitySet.

spürte ich, ich könnte dies zu umgehen, indem databasecontext.Tablename(s).Detach(entityobj); sagen bevor ich wieder anbringen genannt. Aber das Programm immer noch nicht auf der Attach-Anweisung.

Was bin ich? Welche Methode auf dem DB Kontext ruft Update im Domain-Service?

War es hilfreich?

Lösung

Es sieht aus wie Sie den Kontext offen halten, während Sie die Änderungen vornehmen.

In diesem Fall brauchen Sie nicht das Objekt in den Kontext wieder zu befestigen.

Wenn Sie einen Kontext zu öffnen, um ein Objekt aus einem Kontext erhalten, schließen Sie dann den Kontext, machen einige Änderungen an dem Objekt, öffnen Sie dann einen neuen Kontext. In diesem Fall müssen Sie das Objekt auf den Kontext befestigen.

Andere Tipps

Die Frage ist nicht klar. Du hast nicht erwähnt, wie lange dauert Ihre Datenbank Kontext leben und wann haben Sie Einheit in einen Kontext laden.

Aber auf der Grundlage Ihrer Frage Ich denke, dass Sie geladene Einheit haben sie bestanden irgendwo als DTO und wenn der DTO zurückgegeben Sie immer noch den gleichen Kontext verwenden. Sie konvertieren DTO zu Einheit und Sie versuchen, es erneut => BANG Ausnahme zu befestigen. Das gleiche Unternehmen kann nicht zweimal in einem Kontext gestellt werden. Versuchen Sie, verwenden ObjectContext.ApplyCurrentValues ??statt (EF 4.0) oder ApplyPropertyChanges (EF 1,0).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top