从C#DbCommand向SQL DB插入NULL

从C#DbCommand向SQL DB插入NULL,c#,sql,dbcommand,C#,Sql,Dbcommand,上面的方法不起作用(显然),对象没有实例化。我试图在未填充StaffId时将NULL插入数据库。如何实现这一点?尝试DBNull.Value DbParameter param = comm.CreateParameter(); param = comm.CreateParameter(); param.ParameterName = "@StaffId"; if (!string.IsNullOrEmpty(activity.St

上面的方法不起作用(显然),对象没有实例化。我试图在未填充StaffId时将NULL插入数据库。如何实现这一点?

尝试
DBNull.Value

        DbParameter param = comm.CreateParameter();
        param = comm.CreateParameter();
        param.ParameterName = "@StaffId";
        if (!string.IsNullOrEmpty(activity.StaffId))
            param.Value = activity.StaffId;
        param.DbType = DbType.String;
        comm.Parameters.Add(param);

您可以使用
DBNull.Value

if (!string.IsNullOrEmpty(activity.StaffId))
   param.Value = activity.StaffId;
else
  param.Value=DBNull.Value;

当需要将NULL作为参数传递给存储过程时,可以使用DBNull.Value

param.Value = DBNull.Value;
或者,如果操作员:

param.Value = DBNull.Value;

您始终可以使用空合并运算符(?)


您可以使用DBNull.ValuePerfect!如果你把这个作为答案贴出来,我会把它标记为正确的。至于为什么。。。有没有一种方法可以使用这个工具?这里的一种简化if-else语句的运算符??它似乎不喜欢字符串/DBNull.Value转换!?试试这个:param.Value=!string.IsNullOrEmpty(activity.StaffId)?activity.StaffId:(对象)DBNull.Value;谢谢你的编辑,安德烈-非常感谢。这似乎疯狂,必须把它作为一个对象虽然(对我来说无论如何)。
param.Value = !string.IsNullOrEmpty(activity.StaffId) ? activity.StaffId : (object)DBNull.Value;
param.Value = activity.StaffId ?? (object)DBNull.Value;