Tobynate Ответов: 1

Как исправить эту ошибку mysqlconnector.mysqlexception: 'column 'name' cannot be null'


Я пытаюсь передать данные в базу данных phpmyadmin(Xampp) с помощью хранимой процедуры из базы данных, а также собираюсь сопоставить свой объект в коде с параметром из хранимой процедуры с помощью dapper ORM. Теперь, когда я запускаю код для этого, я продолжаю получать ошибку выше, я попытался отладить, я не видел никакой ошибки в своем коде, я понял, что dapper не передает объект из моей модели данных в параметр хранимой процедуры, во время отладки я смог подтвердить, что объект из моей модели был передан в объект динамического параметра, который я передал в команду connection.execute.

Что я уже пробовал:

использование (IDbConnection connection = new MySqlConnector.MySqlConnection(GlobalConfig.CnnString(соединения)))
{
foreach (модель OrganizationMembers в моделях)
{

var p = новые динамические параметры();

строка myName = "@Name";
п. Добавить(моеимя, модель.Название);
п. Добавить ("@"возраст, модель.Возраст);
п. Добавить ("@"класса, модель.Класс);


соединение.Запрос("organizationmembers_insert", p, commandType: CommandType.StoredProcedure);//именно здесь он выдает ошибку, говоря, что столбец name //не может быть null

модель.Id = соединение.Запрос<int>("dbo.SpGetId").Первый();

}

}// столбец name в базе данных действительно был установлен как not null, но значение //было передано в объект, когда я запустил запрос

1 Ответов

Рейтинг:
1

OriginalGriff

Сообщение довольно явное: столбец "имя" не может быть нулевым значением.
Мы не можем видеть ваш SP, но вам нужно посмотреть на две вещи:
1) определение вашей таблицы: столбец "имя" объявляется как

Name NVARCHAR(...) NOT NULL
Что означает, что SQL будет отклонять любые строки, которые не содержат фактической информации об имени.
2) Ваш класс модели и содержимое свойства Name.

На первый взгляд, model.Name по какой-то причине он пуст, и это приводит к сбою вашей вставки. Но мы не можем посмотреть, почему, потому что это требует запуска вашего кода, данных, которые он обрабатывает, и вашей базы данных - и у нас нет доступа ни к одному из них.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как его использовать, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Tobynate

я уже пробовал отладку, и значение для имени было передано в модель,
я попробовал тот же код и хранимую процедуру, используя SQL server в качестве своей базы данных, и это работает просто отлично, но всякий раз, когда я использую phpmyadmin на Xampp, я сталкиваюсь с этой проблемой