【问题标题】:How to pass Stored Procedure with DateTime parameter in Entity Framework如何在实体框架中传递带有 DateTime 参数的存储过程
【发布时间】:2017-03-05 10:40:34
【问题描述】:
public List<Data> GetData(string Date1, string Date2, string param3)
{
    var myData= new List<FindData_Result>();
    using (var context = new Config())
    {
        var queryResult = context.FindData(startDate, endDate, param3);
        final= (from a in queryResult select a).ToList();
    }
}

如何将 date1 和 end date2 作为 datetime 参数传递给我的存储过程?

我正在使用带有实体框架的 MVC Web api(DB 优先方法)

【问题讨论】:

  • 如果您的值对DateTime 有效,则只需设置参数DateTime Date1, DateTime Date2(但我假设您的意思是startDateendDate,而不是Date1Date2

标签: c# asp.net-mvc entity-framework datetime stored-procedures


【解决方案1】:

您应该将日期、开始日期和结束日期的字符串表示形式转换为等效的 DateTime。这可以通过使用DateTime 类型的Parse 方法来完成,如下所示:

var startDate = DateTime.Parse(Date1);
var endDate = DateTime.Parse(Date2);
var queryResult = context.FindData(startDate, endDate, param3).ToList();

您也可以使用ParseExact 方法,前提是您的字符串具有特定格式。如需更多信息,请查看here

【讨论】:

  • 试过这个并得到消息“查询的结果不能被枚举多次”
  • var queryResult = context.FindData(startDate, endDate, param3);在这一行
  • @HDev007 最后调用ToList,它将被修复。这样做你就不再需要名为 final 的变量了。
  • 我阅读了您提到的错误消息,并找到了这个有用的链接stackoverflow.com/questions/5723555/…。请注意 Ageis 发表的最后一条评论,位于已接受的答案下方。
  • 感谢克里斯托斯的帮助 :-)
猜你喜欢
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多