无法在LINQ to EF查询中创建常量值
本文关键字:创建 常量 查询 EF LINQ to | 更新日期: 2023-09-27 18:28:26
我正在尝试从用户类webpages_membership
中检索数据,以验证令牌密码更改。
我试着运行这个查询来从数据库中获得必要的信息:
bool any = ttf.webpages_Membership
.Any(x => x.UserId.Equals(userid)
&& x.PasswordVerificationToken == rt
&& x.PasswordVerificationTokenExpirationDate < DateTime.Now);
if (any == true) {
}
我得到这个异常
无法创建"DBContext.Models.Customers"类型的常数值。此上下文中只支持基元类型或枚举类型。
我该如何避免这种例外情况?
使用此选项可以确保LINQ表达式只有常数值。也要使用==
而不是.Equals
(我不确定LINQ是否能正确处理.Equals
。也许是可能的,但我确信==
工作得很好)。
var now = DateTime.Now;
ttf.webpages_Membership
.Any(x => x.UserId == userid &&
x.PasswordVerificationToken == rt &&
x.PasswordVerificationTokenExpirationDate < now);
LINQ检查lambda谓词的表达式树,并可以将常量值传输到服务器。我认为它不会将DateTime.Now
视为常量,除非您在变量中捕获它,如图所示。