【问题标题】:How to pass a datetime parameter from Entity Framework SqlQuery and SqlParameter to a Stored Procedure?如何将实体框架 SqlQuery 和 SqlParameter 中的日期时间参数传递给存储过程?
【发布时间】:2015-05-25 20:26:32
【问题描述】:

这是我在服务器上的代码:

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

更新: 我通过字符串创建了一个 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 收到的内容时,它工作正常!!有什么问题?

【问题讨论】:

    标签: .net entity-framework datetime sqlparameter


    【解决方案1】:

    哎呀!我发现...可笑的是,我忘记将我的返回数据之一的类型从 string 更改为 Datetime

    【讨论】:

      【解决方案2】:

      这一行代码发生了很多事情。

      在下降过程中,您将日期时间发送到日期时间参数。

      错误消息是将日期转换为字符串时出现问题。这可能正在上升吗?您是否尝试将日期发送到数据网格上的字符串中?

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

      【讨论】:

      • 是的......你是对的!我想念它,但我更新了它。你能再看看吗?
      猜你喜欢
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多