无法在 LINQ to EF 查询中创建常量值

Unable to create a constant value in LINQ to EF query

我正在尝试从用户 class webpages_membership 检索数据以验证令牌密码更改。

Wehn 我尝试运行 这个查询从数据库中获取必要的信息:

bool any = ttf.webpages_Membership
    .Any(x => x.UserId.Equals(userid)
         && x.PasswordVerificationToken == rt
         && x.PasswordVerificationTokenExpirationDate < DateTime.Now);

if (any == true) {

}

我得到这个异常

Unable to create a constant value of type 'DBContext.Models.Customers'. Only primitive types or enumeration types are supported in this context.

如何避免该异常?

使用它来确保 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 视为常量,除非您将其捕获到变量中,如图所示。