我想用输入参数调用这个存储过程:
proc [dbo].[Invoice_GetHomePageInvoices] (
@FinancialYearStartDate datetime = null
, @FinancialYearEndDate datetime = null
麻烦这就是我通常从我的代码调用存储过程的方式是:
return _db.Database.SqlQuery<HomePageInvoice>(string.Format("EXEC Invoice_GetHomePageInvoices @FinancialYearStartDate = '{0}', @FinancialYearEndDate = '{1}'", financialYear.StartDate.ToString(), financialYear.EndDate.ToString()));
所以这不会起作用,因为我基本上将我的日期时间转换为字符串。
我该怎么办呢?
答案 0 :(得分:6)
你应该使用 sql parameters ,基本上是这样的:
var startDate = new SqlParameter("FinancialYearStartDate", dateTimeValueHere);
var endDate = new SqlParameter("FinancialYearEndDate", dateTimeValueHere);
return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", startDate, endDate);
答案 1 :(得分:0)
使用sql server(microsoft)时: http://msdn.microsoft.com/en-us/library/ms187928.aspx “convert(datetime,'{0}',103)”,financialYear.EndDate.ToString(“MM / dd / yyyy”)
编辑:Ropstah的方法实际上更好,这就是我以前的做法:P