如何从MVC调用需要日期时间的存储过程

Ano*_*use 4 c# stored-procedures entity-framework

我想用输入参数调用这个存储过程:

proc [dbo].[Invoice_GetHomePageInvoices] (

      @FinancialYearStartDate datetime = null
,      @FinancialYearEndDate datetime = null
Run Code Online (Sandbox Code Playgroud)

麻烦的是我通常从我的代码调用存储过程的方式是:

return _db.Database.SqlQuery<HomePageInvoice>(string.Format("EXEC Invoice_GetHomePageInvoices @FinancialYearStartDate = '{0}', @FinancialYearEndDate = '{1}'", financialYear.StartDate.ToString(), financialYear.EndDate.ToString()));
Run Code Online (Sandbox Code Playgroud)

所以这不会起作用,因为我基本上将我的日期时间转换为字符串.

我该怎么办呢?

Rop*_*tah 6

你应该使用sql参数,基本上是这样的:

var startDate = new SqlParameter("FinancialYearStartDate", dateTimeValueHere);
var endDate = new SqlParameter("FinancialYearEndDate", dateTimeValueHere);

return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", startDate, endDate);
Run Code Online (Sandbox Code Playgroud)

更多信息:如何使用存储过程的DbContext.Database.SqlQuery <TElement>(sql,params)?EF Code First CTP5