无法在 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
视为常量,除非您将其捕获到变量中,如图所示。
我正在尝试从用户 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
视为常量,除非您将其捕获到变量中,如图所示。