2012-03-26 35 views
1

3つの列の組み合わせとして主キーを持つテーブルがあります 1. AcctNum(文字列) 2. SrvID int型) 3. RevNum(int型)LINQ to Entities "同じキーを持つオブジェクトがObjectStateManagerに既に存在します..."

私は私のコードでやっていることは、私は最大RevNumと特定AcctNumの行を取得し、その後、私は、キー以外のいくつかの列を(変更

  1. です)を使用します。
  2. 次に、新しい行(エンティティ/テーブル型の新しいオブジェクト)を作成します。
  3. 上記の手順1の行のすべての値を上記の手順2で作成した新しい行にマップするためにAutoMapperを使用します。次に、RevNumを1つ増やしてこの新しい行の一意の主キーを作成するようにRevNumを変更します。私はcontext.TableName.AddObject(newRow) を行うと

それが例外をスロー 「同じキーを持つオブジェクトが既にObjectStateManagerに存在しています。ObjectStateManagerは、同じキーで複数のオブジェクトを追跡することはできません。」

新しい行では、RevNumに一意のキーがあるように変更していますが、誰かが私がここで間違っていることを教えてもらえますか?

答えて

1

私はこの問題を自分で解決しました。問題は、AutoMapperを使用して、既存のエンティティインスタンス(マップされたテーブル行)から新しいエンティティインスタンス(作成される新しいテーブル行)にマッピングすることです。

AutoMapperの使用を中止し、各プロパティを手動で1つずつマップしても問題ありませんでした。

同様の問題を伴う別の投稿: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key

関連する問題