我有一个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();
最后一行抛出了从string
到DateTime
的指定强制转换无效的异常。
以下是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)
击> <击> 撞击>
这里出了什么问题?
答案 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
。