如何将DateTime对象设置为null并作为参数发送到存储过程
本文关键字:参数 存储过程 null DateTime 对象 设置 | 更新日期: 2023-09-27 17:58:59
我从visual studio项目中调用存储过程并传递DateTime参数。
这里是c#代码:
DateTime? dtStartFrom = null;
var result = _context.Database.SqlQuery<DamageEventsDTL>("SPDamageEventsDTL @dtStartFrom", new SqlParameter("dtStartFrom", dtStartFrom)).ToList();
存储过程中如何定义变量:
@dtStartFrom date
在这一行,我得到了一个例外:
The parameterized query '(@dtStartFrom nvarchar(4000))SPDamageEventsDTL @dtStartFrom' expects the parameter '@dtStartFrom', which was not supplied.
所以我想空值有问题,所以我尝试了这种方式:
DateTime? dtStartFrom = DBNull.Value;
但在上面一行,我得到了这个错误:
Cannot implicitly convert type 'System.DBNull' to 'System.DateTime?'
知道如何将DateTime对象设置为null并作为参数发送到存储过程中吗?
您的参数名称应该与查询的名称匹配:
new SqlParameter("@dtStartFrom", dtStartFrom);
编辑:
DateTime? dtStartFrom = null;
SqlParameter sqlDateparam = new SqlParameter("@dtStartFrom", SqlDbType.DateTime);
sqlDateparam.IsNullable = true;
if (dtStartFrom.HasValue)
sqlDateparam.Value = dtStartFrom.Value;
else
sqlDateparam.Value = DBNull.Value
var result = _context.Database.SqlQuery<DamageEventsDTL>("SPDamageEventsDTL @dtStartFrom", sqlDateparam).ToList();