如何发送" NULL / DbNull"到具有数据类型的表列:nullable int

时间:2015-02-25 12:54:21

标签: c# asp.net sql-server linq null

我在sql-server 2012中有一个表,其中的列是数据类型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);

2 个答案:

答案 0 :(得分:4)

你应该写:

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

使条件运算符表达式有效。

根据the documentation

  

first_expression和second_expression的类型必须相同,或者从一种类型到另一种类型必须存在隐式转换。

在您的情况下,null和评估为int的表达式混淆了编译器。通过将第一个表达式显式地转换为int?,现在有一种方法可以弄清楚如何评估条件表达式。

答案 1 :(得分:0)

有一个DBNull类的单例实例。尝试协助DBNull.Value