如何将datetime参数从Entity Framework SqlQuery和SqlParameter传递给存储过程?

时间:2015-05-25 20:26:32

标签: .net entity-framework datetime 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

更新: 我按字符串创建了一个DateTime值:

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

但是当我传递System.DateTime值时,它会抛出异常:

  

&#34;来自物化系统.DateTime&#39;的指定演员表。输入&#39; System.String&#39;类型无效。&#34;

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

2 个答案:

答案 0 :(得分:0)

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

在向下的路上,您将日期时间发送到日期时间参数。

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

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

答案 1 :(得分:0)

糟糕!我发现了......可笑的是,我忘记将我的某个返回数据的类型从Crashed: com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x5000000c 0 libobjc.A.dylib objc_msgSend + 5 isKindOfClass: 1 UIKit -[UIWindow setDelegate:] + 122 2 UIKit -[UIPresentationController runTransitionForCurrentState] + 700 3 UIKit -[UIViewController _dismissViewControllerWithAnimationController:interactionController:completion:] + 618 4 UIKit -[UIViewController _dismissViewControllerWithTransition:from:completion:] + 722 5 UIKit -[UIViewController dismissViewControllerWithTransition:completion:] + 822 6 UIKit -[UIViewController dismissViewControllerWithTransition:completion:] + 822 7 UIKit -[UIViewController dismissViewControllerAnimated:completion:] + 222 更改为string