System.ArgumentException при обновлении модели из базы данных

Наше приложение - это приложение MVC. Мы используем Entity Framework. Когда я обновляю модель, чтобы добавить таблицу из базы данных. Я получаю исключение, и он говорит

"При попытке обновления из базы данных произошло исключение типа" System.ArgumentException ". Сообщение об исключении:" Запись с тем же ключом уже существует ".

Я не могу понять, в чем проблема. Могу ли я найти решение проблемы.

Ответы

Ответ 1

У меня это было так, как ты. Вероятно, у вас есть два идентичных узла: EntitySetMapping. Вы должны удалить один, и все будет хорошо.

Ответ 2

Сегодня я столкнулся с этой проблемой. Это означает, что у вас есть два определения определенного типа с тем же именем. В моем случае это был дубликат EntitySetMapping. Это произошло в результате переноса некоторых настроек из старой версии моей модели в новую версию. Я скопировал EntitySetMapping с пользовательскими сопоставлениями вставки/удаления/обновления, но я не думал удалять сопоставление, которое ранее было автогенерировано разработчиком модели.

К сожалению, вы не будете знать, что у вас есть эта проблема до следующего раза, когда вы пытаетесь обновить базу данных, что означает, что этот потенциал может остаться незамеченным в течение некоторого времени.

В будущем при внесении значительных изменений в модель с помощью XML-редактора я бы рекомендовал вам обновить тестовую базу данных, чтобы убедиться, что все в порядке.

Ответ 3

Возможно, существует еще одна таблица с тем же ключом. Можем ли мы увидеть код? Подробнее об этом исключении здесь.

Ответ 4

Недавно я столкнулся с аналогичной проблемой с EF6, где эта ошибка происходила, и нигде не было дублирующего ключа... Это было видно в edmx. Мне нужно было щелкнуть правой кнопкой мыши в edmx и выбрать "Браузер модели". В представлении "Браузер модели" и в разделе "Типы моделей/типов объектов" существовали некоторые затяжные объекты. По какой-то причине удаление всех объектов в edmx фактически не делало того, что вы думаете. Удаление этих затяжных сущностей в браузере моделей решило мою проблему. Надеюсь, это решит некоторые проблемы людей, потому что этот тип решения легко исправить, но трудно найти.

Ответ 5

Ну, похоже, я понял, что исправить для моего дела.

Шаг 1: я удалил таблицу из модели edmx, содержащую ссылку или то, что когда-либо вызывало ошибку.

Шаг 2: я щелкнул правой кнопкой мыши конструктор и снова нажал "Обновить модель из базы данных", и все было исправлено.

FYI, единственный способ узнать, какая таблица для удаления была потому, что она была последней модификацией, так как последняя версия "Обновить модель из базы данных" работала последним.

Взято отсюда