2015-05-25 30 views
1

这是我的代码在服务器上:如何将实体框架SqlQuery和SqlParameter中的日期时间参数传递给存储过程?

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 

更新: 我创建的字符串日期时间值:

var date = "2015/05/25"; 
var time = "20:30" 
filterList.Add(Convert.ToDateTime(date + " " + time)); 

但是当我通过System.DateTime值,它抛出一个异常:

“从物化”System.DateTime“类型到”System.String“类型的指定强制转型无效。”

我该如何通过它?
有趣的是,当我将SQL Profiler设置为观察并运行SQL Profiler收到的内容时,它工作正常!有什么问题?

回答

0

糟糕!我发现......可笑地忘记将我的返回数据的类型从string更改为Datetime

0

在这一行代码中有很多事情发生。

在发送日期时间到datetime参数的过程中。

错误消息是将日期转换为字符串的问题。这可能会在路上吗?你是否试图将日期发送到数据网格上的字符串?

您应该首先创建一个执行存储过程的单元测试。

+0

是啊...你是对的!我很想念,但我更新了它。你能再看看吗? – Braveheart6M6

相关问题