在我的数据层类中,我像这样初始化一个参数:

private int? _DependencyID;

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

public ConstructorMethod()
{
    _DependencyID = (int?)null;
}


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

cmd.AddWithValue("@DependencyID", _DependencyID);


如果_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);


无论哪种方式,都有问题。我该如何处理?

预先感谢您的任何帮助

最佳答案

您需要添加一个object

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


您可以将其缩短为

cmd.AddWithValue("@DependencyID", (object)_DependencyID ?? DBNull.Value);

08-25 17:54