2015-05-25 31 views
1

這是我的代碼在服務器上:如何將實體框架SqlQuery和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 

更新: 我創建的字符串日期時間值:

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收到的內容時,它工作正常!有什麼問題?

回答

0

糟糕!我發現......可笑地忘記將我的返回數據的類型從string更改爲Datetime

0

在這一行代碼中有很多事情發生。

在發送日期時間到datetime參數的過程中。

錯誤消息是將日期轉換爲字符串的問題。這可能會在路上嗎?你是否試圖將日期發送到數據網格上的字符串?

您應該首先創建一個執行存儲過程的單元測試。

+0

是啊...你是對的!我很想念,但我更新了它。你能再看看嗎? – Braveheart6M6

相關問題