如何将日期时间参数从 Entity Framework SqlQuery 和 SqlParameter 传递到存储过程?
How to pass a datetime parameter from Entity Framework SqlQuery and SqlParameter to a Stored Procedure?
这是我在服务器上的代码:
model.Grid.DataSource =
db.Database.SqlQuery<Reports.Cardex>("[dbo].[SP_RptCardexSummary_English_1] @OwnerCode, @TypeCode, @MeasurementUnitCode, @FDate",
new SqlParameter { ParameterName = "@OwnerCode", Value = filterList[0] },
new SqlParameter { ParameterName = "@TypeCode", Value = filterList[1] },
new SqlParameter { ParameterName = "@MeasurementUnitCode", Value = filterList[2] },
new SqlParameter { ParameterName = "@FDate", Value = filterList[3] })
.ToList();
和我的程序:
ALTER PROCEDURE [dbo].[SP_RptCardexSummary_English_1]
@OwnerCode int,
@TypeCode int,
@MeasurementUnitCode smallint,
@FDate datetime
更新:
我通过 String:
创建了一个 DateTime 值
var date = "2015/05/25";
var time = "20:30"
filterList.Add(Convert.ToDateTime(date + " " + time));
但是当我传递一个 System.DateTime
值时,它抛出一个异常:
"The specified cast from a materialized 'System.DateTime' type to the 'System.String' type is not valid."
我应该怎么传?
有趣的是,当我设置 SQL Profiler 用于观察和 运行 SQL Profiler 收到的内容时,它工作正常!有什么问题吗?
这一行代码中发生了很多事情。
在发送过程中,您将日期时间发送到日期时间参数。
错误消息是将日期转换为字符串时出现问题。这可能是在上升的路上吗?您是否尝试将日期发送到数据网格上的字符串中?
您应该首先创建一个执行存储过程的单元测试。
糟糕!我发现......可笑的是我忘了将我的 return 数据之一的类型从 string
更改为 Datetime
!
这是我在服务器上的代码:
model.Grid.DataSource =
db.Database.SqlQuery<Reports.Cardex>("[dbo].[SP_RptCardexSummary_English_1] @OwnerCode, @TypeCode, @MeasurementUnitCode, @FDate",
new SqlParameter { ParameterName = "@OwnerCode", Value = filterList[0] },
new SqlParameter { ParameterName = "@TypeCode", Value = filterList[1] },
new SqlParameter { ParameterName = "@MeasurementUnitCode", Value = filterList[2] },
new SqlParameter { ParameterName = "@FDate", Value = filterList[3] })
.ToList();
和我的程序:
ALTER PROCEDURE [dbo].[SP_RptCardexSummary_English_1]
@OwnerCode int,
@TypeCode int,
@MeasurementUnitCode smallint,
@FDate datetime
更新: 我通过 String:
创建了一个 DateTime 值var date = "2015/05/25";
var time = "20:30"
filterList.Add(Convert.ToDateTime(date + " " + time));
但是当我传递一个 System.DateTime
值时,它抛出一个异常:
"The specified cast from a materialized 'System.DateTime' type to the 'System.String' type is not valid."
我应该怎么传?
有趣的是,当我设置 SQL Profiler 用于观察和 运行 SQL Profiler 收到的内容时,它工作正常!有什么问题吗?
这一行代码中发生了很多事情。
在发送过程中,您将日期时间发送到日期时间参数。
错误消息是将日期转换为字符串时出现问题。这可能是在上升的路上吗?您是否尝试将日期发送到数据网格上的字符串中?
您应该首先创建一个执行存储过程的单元测试。
糟糕!我发现......可笑的是我忘了将我的 return 数据之一的类型从 string
更改为 Datetime
!