cmd.Parameters.AddWithValue可以为null

Ben*_*gal 1 c# t-sql asp.net

在我的数据层类中,我初始化一个参数,如下所示:

private int? _DependencyID;

public int? DependencyID
{ get {return _DependencyID;} set {_DependencyID = value;} }

public ConstructorMethod()
{
    _DependencyID = (int?)null;
}
Run Code Online (Sandbox Code Playgroud)

在类Insert()方法中,我正在尝试

cmd.AddWithValue("@DependencyID", _DependencyID);
Run Code Online (Sandbox Code Playgroud)

如果_DependencyID有一个值,那么一切都很好.如果_DependencyID为null,我会收到错误:

参数化查询'(@ param1(nvarchar(10),@ param2(nvarchar(255),期望参数'@DependecyID',未提供)

我找到了[文章] [1],所以我尝试调整代码如下:

cmd.AddWithValue("@DependencyID", _DependencyID == null? DBNull.Value : _DependencyID); 

                           and
cmd.AddWithValue("@DependencyID", _DependencyID == null? (int?) DBNull.Value : _DependencyID); 
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,都有问题.我该怎么处理?

在此先感谢您的帮助

SLa*_*aks 5

你需要添加一个object:

cmd.AddWithValue("@DependencyID", _DependencyID == null? DBNull.Value : (object)_DependencyID); 
Run Code Online (Sandbox Code Playgroud)

你可以缩短它

cmd.AddWithValue("@DependencyID", (object)_DependencyID ?? DBNull.Value); 
Run Code Online (Sandbox Code Playgroud)