LINQ to Entities: «Объект с таким же ключом уже существует в ObjectStateManager ...» - PullRequest
1 голос
/ 26 марта 2012

У меня есть таблица с первичным ключом в виде комбинации из 3 столбцов 1. AcctNum (строка) 2. SrvID (int) 3. RevNum (int)

Что я делаю в своем коде,

  1. Я получаю строку для определенного AcctNum с максимальным RevNum, а затем я изменяю некоторые столбцы (кроме ключа) для этой строки.
  2. Затем я создаю новую строку (aновый объект типа Entity / table)
  3. Я использую AutoMapper, чтобы отобразить все значения строки, начиная с шага 1 выше, в новую строку, созданную на шаге 2 выше.Затем я изменяю RevNum, увеличивая его на единицу, чтобы создать уникальный первичный ключ для этой новой строки.

Когда я делаю context.TableName.AddObject (newRow), он выдает исключение «Объект стот же ключ уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом. "

Даже если в новой строке я изменяю RevNum на уникальный ключ.Может кто-нибудь сказать мне, что я здесь делаю не так?

1 Ответ

1 голос
/ 27 марта 2012

Я решил эту проблему сам. Проблема заключается в использовании AutoMapper для сопоставления существующего экземпляра сущности (строка сопоставленной таблицы) с новым экземпляром сущности (создается новая строка таблицы).

Я перестал использовать AutoMapper и сопоставил каждое свойство вручную одно за другим, и оно работало просто отлично!

Еще один пост с похожей проблемой: Объект с таким же ключом уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...