2015-02-25 1 views
1

Я получил таблицу в sql-сервере 2012 с столбцом, который является типом данных int, но также может быть обнулен.Как отправить «NULL/DbNull» в столбец таблицы с типом данных: nullable int

У меня есть текстовое поле, которое при пустом должно вставить NULL в ячейку с нулевым значением int. Но у меня возникли проблемы с тем, какой тип для отправки нужно перевести как null. То, что я хочу, это тип данных int, но также и null (int?) Для отправки в базу данных.

var tbl_row = db.table.Where(n => n.key.Equals(key)).SingleOrDefault(); 

tbl_row.nullable_int = this.tb.Text == "" ? [null int value] : int.Parse(this.tb.Text); 

ответ

4

Вы должны написать:

tbl_row.nullable_int = this.tb.Text == "" ? (int?)null : int.Parse(this.tb.Text); 

для условного выражения оператора в силе.

В соответствии с the documentation:

Либо тип first_expression и second_expression должны быть одинаковыми, или неявное преобразование должно существовать от одного типа к другому.

В вашем случае, null и выражения, вычисляемого как int путать компилятор. Явным образом, выведя первое выражение в int?, теперь есть способ выяснить, как оценить условное выражение.

+0

Могу ли я предложить использовать 'string.IsNullOrWhiteSpace (this.tb.Text)' вместо 'this.tb.Text ==" "' – user3021830

+0

Невозможно неявно преобразовать тип 'int?' to 'int'. Явное преобразование существует (вы пропускаете листинг?) –

+0

@ user3021830 Это невозможно для ['TextBox.Text'] (http://referencesource.microsoft.com/#System.Web/UI/WebControls/TextBox.cs, 92b4f85cd223169c) будет «null». Он выполняет внутреннюю проверку для «null» и возвращает пустую строку. –

0

Имеется экземпляр Singleton класса DBNull. Попробуйте assingning DBNull.Value

+0

Уже пробовал, что: Тип условного выражения не может быть определен, потому что нет никакого неявного преобразования между 'System.DBNull' и 'int' , –

+0

tbl_row.nullable_int = this.tb.Text == ""? (объект) DBNull.Value: (объект) int.Parse (this.tb.Text); ? оператор требует, чтобы оба возвращающих его аргумента были одного типа или были неявно конвертируемыми. –

+0

Невозможно неявно преобразовать тип 'object' в 'int'. Явное преобразование существует (вам не хватает роли?) –

Смежные вопросы