无法在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 to EF查询中创建常量值

使用此选项可以确保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视为常量,除非您在变量中捕获它,如图所示。