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

标签 c# entity-framework stored-procedures

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

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()));

所以这是行不通的,因为我基本上已经将我的日期时间转换为字符串。

我到底应该怎么做?

最佳答案

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

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

return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", startDate, endDate);

更多信息:How to use DbContext.Database.SqlQuery<TElement>(sql, params) with stored procedure? EF Code First CTP5

关于c# - 如何从需要日期时间的 MVC 调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182395/

相关文章:

c# - 使用 EntityFramework 的模式?

mysql - 如果不存在并插入 mysql 存储过程

c# - 多站点 CMS - 每个站点的数据库,还是所有站点的一个数据库?

c# - 如何在 C# 中使用 XAML 中定义的画笔资源

c# - 使用 Azure Functions 和 .NET 5 将不同的连接字符串传递到 IDesignTimeDbContextFactory(独立)

c# - 如何仅使用单向导航对 Entity Framework 实体/映射进行建模

oracle - 调用过程时的 PL/SQL 事务

database - 在没有 CrossTab 的 Crystal 报表中每行和每列添加 "Total"

c# - 将 WPF 可视化元素保存为 JPEG

c# - Visual Studio 报告属性没有 getter,即使 intellisense 说它有