Я добавляю в БД запись, стоки беру из textbox. Если textbox не заполнен, то нужно поставить значение NULL.
Первый вариант (рабочий):
string patronymic = textBoxPatronymic.Text; if(patronymic != "") { command.Parameters.AddWithValue(patronymic );} else {command.Parameters.AddWithValue(DBNull.Value);}
Но хотелось, чтобы код был более читабельным, сделал так:
command.Parameters.AddWithValue("@patronymic", string.IsNullOrWhiteSpace(patronymic) ? DBNull.Value : patronymic);
или
command.Parameters.Add("@patronymic", SqlDbType.NVarChar).Value = string.IsNullOrWhiteSpace(patronymic) ? DBNull.Value : patronymic;
Но в результате ошибка:
Не удается определить тип условного выражения, так как неявного преобразования между "System.DBNull" и "string" не существует.
В интернете советуют этот способ, но у меня он не работает. В чем моя ошибка?
Вы пытаетесь вернуть неодинаковые типы в
string.IsNullOrWhiteSpace(patronymic) ? DBNull.Value : patronymic
Так делать нельзя.
Предлагаю вам явно привести каждый из них к базовому object
string.IsNullOrWhiteSpace(patronymic) ? (object)DBNull.Value : (object)patronymic
Сборка персонального компьютера от Artline: умный выбор для современных пользователей