当C#方法的可选参数(DBNull.Value
)为Parameters.AddWithVallue
时,我正在尝试使用string
撰写null
。
public static void Abc(string distrito, string municipio = null)
command.Parameters.AddWithValue("@Municipio", municipio ?? (object)DBNull.Value);
command.Parameters.AddWithValue("@Municipio", municipio.Length > 0 ? municipio : (object)DBNull.Value);
但是,(object)DBNULL
会以两种不同的工作方式返回两个不同的值。一个写空/空和其他NULL。
答案 0 :(得分:3)
我会做一些假设,但我想我知道发生了什么。 municipio
可能是一个空字符串。它不 null。
在这种情况下,municipio ?? (object)DBNull.Value
将是一个空字符串,不是 null。但是,municipio.Length > 0 ? municipio : (object)DBNull.Value
的值为DBNull.Value
,这将在SQL Server中生成null。在这种情况下,如果municipio
为null,则抛出此代码。既然你说代码运行了,我假设municipio
不是空的。