System.ArgumentException при обновлении модели из базы данных - PullRequest
17 голосов
/ 15 июня 2011

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

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

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

Ответы [ 5 ]

39 голосов
/ 26 июля 2012

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

3 голосов
/ 24 февраля 2012

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

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

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

1 голос
/ 03 июня 2015

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

1 голос
/ 15 июня 2011

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

0 голосов
/ 22 февраля 2017

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

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

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

К вашему сведению, единственный способ узнать, какую таблицу удалить, это то, что она была последней, измененной с тех пор, как «Обновление модели из базы данных» работало последним.

взято отсюда

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