EntityFramework:从具体化的“System.String”类型到“System.DateTime”类型的指定强制转换无效

时间:2013-05-09 11:40:11

标签: c# sql-server tsql dbcontext

我有一个SP,我正在SqlQuery DbContext.Database方法的帮助下执行。我的意思如下:

编辑1: - 现在通过DateTime

var t = form["datetime"];//value is 2013-May-08 09:30
DateTime dtm;
if (!DateTime.TryParse(t, out dtm))//successfully parses
     dtm = new DateTime(2013, 05, 8, 9, 30, 0);
var rTime= new SqlParameter("@rTime", dtm);
var result = UoW.ExecuteSp<SPResult>("spResult @rTime", rTime).ToList();

最后一行抛出了从stringDateTime的指定强制转换无效的异常。

以下是SP的定义。

ALTER PROC [dbo].[spResult]
(
    @rTime SMALLDATETIME --VARCHAR(32)
)
AS
BEGIN
--OTHER CODE
END

如果我在SQL Management Studio中直接执行SP,它运行没有任何问题:

EXEC spResult ='2013-May-08 09:30'

在SP中,字符串将转换为日期时间,如下所示:

@resultAt SMALLDATETIME = CAST(@rTime AS SMALLDATETIME)

<击>

这里出了什么问题?

1 个答案:

答案 0 :(得分:2)

spResult作为参数的内容是什么?大概是datetime?在这种情况下:给它一个DateTime

var t = DateTime.Now;

var t = new DateTime(2013,5,8,9,30,0); // 8 May 2013, 9:30am

如果错误与SPResult有关 - 好吧,我们看不到那么难以评论:但是再次 - 将SQL [n][var]char(len|max)映射到C#string,并映射SQL datetime到C#DateTime