Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/76: Рейтинг темы: голосов - 76, средняя оценка - 4.89
 Аватар для gen1usqq
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 135

Cannot insert the value NULL into column 'Id', table '.dbo.Records';column does not allow nulls

21.08.2016, 17:37. Показов 16259. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые, т.к. мой мозг не способен понять, почему вылазит данное исключение, когда я добавляю строку и в ней поле Id - не NULL, надеюсь найдутся высшие разумы способные мне хелпануть.

Вот полностью текст исключения:
Исключение типа "System.Data.Entity.Infrastructure.DbUpd ateException" возникло в EntityFramework.dll, но не было обработано в коде пользователя

Дополнительные сведения: An error occurred while updating the entries. See the inner exception for details.

А вот это уже в дополнительных сведениях: Cannot insert the value NULL into column 'Id', table ..\DBRECORDS.MDF.dbo.Records'; column does not allow nulls. INSERT fails.
The statement has been terminated.

Использую Entity Framework, БД добавил просто в Visual Studio, и там же я добавил таблицу с полями, она у меня одна. Структура таблицы будет показана на скрине. У меня есть соответствующий класс (назв. таблицы Records) Records.cs в котором следующий код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Records
    {
        public int Id { get; set; }
        public int Level { get; set; }
        public string Name { get; set; }
        public DateTime Time_passage { get; set; }        
 
        public Records(int Id, int Level, string Name, DateTime Time_passage)
        {
            this.Id = Id;
            this.Level = Level;
            this.Name = Name;
            this.Time_passage = Time_passage;
        }
        public Records()
        {            
        }
    }
 
    public class RecordsContext : DbContext
    {
        public RecordsContext() : base(DBLocatorHack.Connection, true)
        {
        }
        public DbSet<Records> rcrds { get; set; }
    }
Исключение вылазит при вызове метода SaveChanges
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 public WindowAddRecord(int numberoflevel,WindowGame wg)
        {
            InitializeComponent();
 
            this.numberoflevel = numberoflevel;
            this.wg = wg;
 
            db = new RecordsContext();
            db.rcrds.Load();
        }
 
        int numberoflevel;
        RecordsContext db;
        WindowGame wg;
 
  private void btnAddRecord_Click(object sender, RoutedEventArgs e)
        {
            db.rcrds.Add(new Records(1, numberoflevel, tbName.Text, DateTime.Now));
            db.SaveChanges(); // Вот тут исключение
            Close();
        }
Надеюсь на умных людей, которые способны мне помочь ибо я уже не знаю как так возможно, что я добавляю значение, а пишет что нету значения, бред.
Миниатюры
Cannot insert the value NULL into column 'Id', table '.dbo.Records';column does not allow nulls   Cannot insert the value NULL into column 'Id', table '.dbo.Records';column does not allow nulls  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2016, 17:37
Ответы с готовыми решениями:

Cannot modify a column which maps to a non key-preserved table, insert into
Есть две таблицы: create table slimnicas( s_ID number constraint Ierob_pa PRIMARY KEY, -- &lt;&lt;&lt; s_nosaukums varchar2(50) constraint...

Insert: column name or number of supplied values does not match table definition
Добрый вечер! На форме имеется 11 полей ввода: 7 string(2 comboBox &amp; 5 textBox), 3 int, 1 date. Столкнулся с проблемой при попытки...

Указание Id и исключение "Cannot insert the value NULL into column 'Id'"
Всем привет, ребят нужна ваша помощь.Я недавно начал изучать asp.net и у меня проблема. Я создал сайт с каталогом игр, и страничку через...

4
 Аватар для Komaryan
16 / 16 / 10
Регистрация: 23.03.2010
Сообщений: 103
22.08.2016, 12:03
Лучший ответ Сообщение было отмечено gen1usqq как решение

Решение

Могу предположить следующее: в Entity Framework (Code First) есть соглашение типа - поля с именем Id и ИмяТаблицыId - это ключевые поля типа автоинкремент. И от сюда вывод думаю логичен: переименовать поле Id или просто сделать его автоинк и не присваивать ему значение.

Добавлено через 2 часа 10 минут
а для более детального описания ошибки используй вот такой не хитрый код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
catch(System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                string s = "";
                foreach(var e in ex.EntityValidationErrors)
                {
                    foreach(var er in e.ValidationErrors)
                    {
                        s += er.PropertyName + ". Message: " + er.ErrorMessage;
                    }
                }
                MessageBox.Show(s);
            }
1
 Аватар для gen1usqq
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 135
22.08.2016, 15:06  [ТС]
Рад, что появились хоть какие-то версии, но слушайте, я не понял, где именно убрать поле Id, и как поставить Автоинкремент? Извиняюсь за глупость и тупость.
0
 Аватар для Komaryan
16 / 16 / 10
Регистрация: 23.03.2010
Сообщений: 103
22.08.2016, 17:06
Для начала советую эту строку db.SaveChanges(); // Вот тут исключение обрамить в try catch и в catch вставить то что я вам скинул. Это сообщение выведет вам более детальное описание ошибки, а вот его скиньте сюда.
0
 Аватар для gen1usqq
1 / 1 / 0
Регистрация: 11.12.2014
Сообщений: 135
22.08.2016, 17:34  [ТС]
Спасибо тебе большое, я просто поставил в описании поля Id int IDENTITY(1,1) и всё гуд
Добра тебе и счастья, удачи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2016, 17:34
Помогаю со студенческими работами здесь

Ошибка "Cannot insert the value NULL into column"
Сделал две таблицы в SQL server , перешел к делфи , подключил их в делфи . начинаю запускать выдает ошибку

UPDATE SELECT, ERROR: null value in column violates not-null constraint
Здравствуйте. Две таблицы, из одной значением integer модифицируется int другой таблицы. В таблице-приёмнике ограничение NOT NULL. ...

Как выполнить AVG(column), последних по дате n значений поля column
Задача: выбрать последние по дате 5 значений поля sum, и агрегировать их. Делаю запрос: select sum from table where...

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'site_name' in 'field list'
Доброго времени суток! Генерируется запрос следующего типа: UPDATE `seoCustom` SET `site_name` = 'Мой сайт', `locale` = 'ru_RU',...

Ошибка при записи в Access - Cannot set column 'Описание'. The value violates the MaxLength limit of this column.
Привет. Такая проблема: при записи текста более 255 символов из richtextbox в Access возникает исключение: Cannot set column 'Описание'....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru