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),但在比较的两侧都有相同的类型。有人能帮我吗?
提前感谢!!
我不确定((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函数来计算两个时间跨度之间的分钟数。