Ответ 1
У меня это было так, как ты. Вероятно, у вас есть два идентичных узла: EntitySetMapping
. Вы должны удалить один, и все будет хорошо.
Наше приложение - это приложение MVC. Мы используем Entity Framework. Когда я обновляю модель, чтобы добавить таблицу из базы данных. Я получаю исключение, и он говорит
"При попытке обновления из базы данных произошло исключение типа" System.ArgumentException ". Сообщение об исключении:" Запись с тем же ключом уже существует ".
Я не могу понять, в чем проблема. Могу ли я найти решение проблемы.
У меня это было так, как ты. Вероятно, у вас есть два идентичных узла: EntitySetMapping
. Вы должны удалить один, и все будет хорошо.
Сегодня я столкнулся с этой проблемой. Это означает, что у вас есть два определения определенного типа с тем же именем. В моем случае это был дубликат EntitySetMapping. Это произошло в результате переноса некоторых настроек из старой версии моей модели в новую версию. Я скопировал EntitySetMapping с пользовательскими сопоставлениями вставки/удаления/обновления, но я не думал удалять сопоставление, которое ранее было автогенерировано разработчиком модели.
К сожалению, вы не будете знать, что у вас есть эта проблема до следующего раза, когда вы пытаетесь обновить базу данных, что означает, что этот потенциал может остаться незамеченным в течение некоторого времени.
В будущем при внесении значительных изменений в модель с помощью XML-редактора я бы рекомендовал вам обновить тестовую базу данных, чтобы убедиться, что все в порядке.
Возможно, существует еще одна таблица с тем же ключом. Можем ли мы увидеть код? Подробнее об этом исключении здесь.
Недавно я столкнулся с аналогичной проблемой с EF6, где эта ошибка происходила, и нигде не было дублирующего ключа... Это было видно в edmx. Мне нужно было щелкнуть правой кнопкой мыши в edmx и выбрать "Браузер модели". В представлении "Браузер модели" и в разделе "Типы моделей/типов объектов" существовали некоторые затяжные объекты. По какой-то причине удаление всех объектов в edmx фактически не делало того, что вы думаете. Удаление этих затяжных сущностей в браузере моделей решило мою проблему. Надеюсь, это решит некоторые проблемы людей, потому что этот тип решения легко исправить, но трудно найти.
Ну, похоже, я понял, что исправить для моего дела.
Шаг 1: я удалил таблицу из модели edmx, содержащую ссылку или то, что когда-либо вызывало ошибку.
Шаг 2: я щелкнул правой кнопкой мыши конструктор и снова нажал "Обновить модель из базы данных", и все было исправлено.
FYI, единственный способ узнать, какая таблица для удаления была потому, что она была последней модификацией, так как последняя версия "Обновить модель из базы данных" работала последним.