使用Entity Framework,我运行了一个存储过程,但是我收到了这个错误:
将数据类型nvarchar转换为datetime时出错
我从前端2017-11-07T00:00:00
获取值,并将其转换为DateTime
对象preAuthorize.DepositDate
。然后我调用存储过程如下:
var StartingDate = new SqlParameter("@StartingDate", preAuthorize.DepositDate);
dbContextScope.DbContexts.Get<BAEntities>().Database.ExecuteSqlCommand(
"My_Procedure @StartingDate, ...",
StartingDate,
...
);
我查看了SQL分析器并找到了声明:
exec sp_executesql N'My_Procedure @StartingDate, ...', N'@StartingDate datetime, ...', @StartingDate='2017-11-07 00:00:00' ...
我在SQL中运行它并生成相同的错误。奇怪的是,如果我删除StartingDate
,我仍然会收到错误。这个存储过程已经多年了,所以我认为它与我如何调用存储过程而不是存储过程逻辑有关。
如果我把我的价值观直接插入
EXEC Web_Schedule_AddNewSchedule
@StartingDate = '2017-11-07',
...
然后运行正常并插入数据,因此上面的sp_executesql
语句出错了。
编辑:我将电话改为
dbContextScope.DbContexts.Get<BAEntities>().Database.ExecuteSqlCommand(
"My_Procedure @StartingDate = @StartingDate, ...",
StartingDate,
...
);
我设置的字符串@StartingDate = @StartingDate,
中的位置仅在我执行此操作后才有效,但我在网上看到的所有示例都没有。有人知道为什么吗?
答案 0 :(得分:0)
您必须在ExecuteSqlCommand
中包含所有可能的参数,而不仅仅是您要设置的参数。