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. Это сработало для меня. ошибка исчезнет