Entity Framework - "Произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении"

У меня проблема, я только начал изучать EF Model First, и я некоторое время остаюсь в одной точке. Я получил такую ​​ошибку:

"Произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении"

Я создал простую модель на диаграмме, сгенерировал базу данных и написал простой код на C#, чтобы добавить только одну строку в таблицу, но ошибка постоянно появляется.

Выкладываю скриншот с Diagram/ Сгенерированная DLL/Simple Main/ И выкидывание ошибки

модель и прочее

Ссылка для увеличения: https://i.imgur.com/bKGc4wv.png

8 ответов

Решение

Повернуть Pluralization On, Проблема в том, что вы моделируемый объект используете единственное имя (Pupil) в то время как в вашей базе данных вы используете множественные имена Pupils с s,

ОБНОВИТЬ

Этот пост показывает, как вы можете включить или выключить его. Некоторые соответствующие выдержки из этого поста:

Чтобы включить и выключить множественное число

  • В меню Сервис выберите Параметры.

  • В диалоговом окне "Параметры" разверните Инструменты базы данных. Примечание. Выберите "Показать все настройки", если узел "Инструменты базы данных" не отображается.

  • Нажмите O/R Designer.

  • Установите параметр "Плюрализация имен" на "Enabled = False", чтобы установить конструктор O / R таким образом, чтобы он не изменял имена классов.

  • Установите параметр "Плюрализация имен" на "Включено = Истина", чтобы применить правила множественного числа к именам классов объектов, добавляемых в O/R Designer.

ОБНОВЛЕНИЕ 2

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

(...) Когда вы работаете с подходом Entity Framework Code First, вы создаете таблицы базы данных из классов вашей модели. Обычно Entity Framework создает таблицы с множественными именами. это означает, что если у вас есть класс модели с именем PhoneNumber, платформа Entity создаст для этого класса таблицу с именем "PhoneNumbers". Если вы хотите избежать множественного имени и хотите использовать имя в единственном числе, например Customer, вы можете сделать это следующим образом. В вашем классе DBContext переопределите метод "OnModelCreating" следующим образом (...)

(...) Наличие этого метода переопределения позволит избежать создания таблиц с множественными именами. Теперь он создаст таблицу с именем "PhoneNumber", а не "PhoneNumbers" (...)

Это может быть причиной преобразования данных из.net в sql. например ошибка преобразования даты и времени.

вообще это не точная ошибка. Вы можете увидеть точную ошибку в часы в исключении.InnerException.InnerException -> ResultView.

для меня это была нулевая ссылка на столбец datetime

Просмотрите внутреннее исключение исключения, чтобы получить более конкретное сообщение об ошибке.

Один из способов просмотреть внутреннее исключение - это перехватить исключение и установить на нем точку останова. Затем в окне Locals: выберите Exception variable > InnerException > Message

И / или просто напишите в консоль:

    catch (Exception e)
    {
        Console.WriteLine(e.InnerException.Message);
    }

Моя проблема заключалась в том, что идентификатор таблицы не AUTO_INCREMENT, и я пытался добавить диапазон.

Для записей у меня была эта проблема и была глупая ошибка с моей стороны. Моя проблема была несоответствие типов данных. Тип данных в таблице базы данных и классы C# должны быть одинаковыми......

У меня была такая же проблема с SaveChanges() в EF, но в моем случае я забыл обновить свою таблицу sql, а затем после того, как я использовал миграцию, моя проблема решена, поэтому, возможно, обновление ваших таблиц решит проблему.

Я столкнулся с той же проблемой, и ни одно из вышеперечисленных решений не помогло мне. В моем Web Api 2 проект, я фактически обновил свою базу данных и поместил unique constraint на SQL table column. Это на самом деле вызывало проблему. Простая проверка повторяющихся значений столбца перед вставкой помогла мне решить проблему!

У меня была эта проблема недавно. Это произошло, потому что права пользователей базы данных. проверьте права доступа к базе данных пользователей, возможно, у пользователя нет прав на запись в БД.

В моем случае.. следующие шаги решены:

Было значение столбца, для которого было установлено "Обновить" - заменили его на "Правка" (не ключевое слово sql). В одном из имен столбцов был пробел (убрал лишний пробел или обрезку)

Я столкнулся с той же ошибкой:

"Произошла ошибка при обновлении записей. Подробности см. Во внутреннем исключении"

Просто удалите и создайте файл *.edmx. Это сработало для меня. ошибка исчезнет

Другие вопросы по тегам