linq请求中出现DbArithmeticExpression错误

本文关键字:DbArithmeticExpression 错误 请求 linq | 更新日期: 2023-09-27 18:26:12

当我试图用Linq和实体框架请求数据时,遇到了一个错误。下面是以下内容:

verif = context.DeviceVerifications.Where(d => d.phone == phone 
                && d.securityKey == key 
                && d.validated == 0 
                && (((TimeSpan)(DateTime.Now - d.createDate)).Minutes <= 30)).FirstOrDefault();

显示的错误如下:DbArithmeticExpression参数必须具有数字通用类型我认为问题来自请求的这一部分((TimeSpan)(DateTime.Now-d.createDate))。分钟<=30),但在比较的两侧都有相同的类型。有人能帮我吗?

提前感谢!!

linq请求中出现DbArithmeticExpression错误

我不确定((TimeSpan)(DateTime.Now - d.createDate)).Minutes <= 30)表达式是否可以正确转换为存储查询。

我会使用DbFunctions.DiffMinutes方法

verif = context.DeviceVerifications.Where(d => d.phone == phone 
          && d.securityKey == key 
          && d.validated == 0 
          && DbFunctions.DiffMinutes(DateTime.Now, d.createDate) <= 30)).FirstOrDefault();

实体框架中不支持带DateTime的算术运算,您必须使用DbFunctions.DiffMinutes。根据文档,当用作LINQ to Entities查询的一部分时,此方法调用规范的DiffMinutes EDM函数来计算两个时间跨度之间的分钟数。

相关文章:
  • 没有找到相关文章