2015-12-28 64 views
0

一個恆定值,我正在嘗試從用戶類webpages_membership數據驗證令牌密碼更改。無法創建LINQ到EF查詢

Wehn我嘗試運行此查詢從數據庫中獲取必要的信息:

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

if (any == true) { 

} 

我得到這個例外

無法創建類型「DBContext.Models的恆定值。顧客'。只有原始類型或枚舉類型在此上下文中受支持。

我怎樣才能避免這種例外?

+1

什麼類型是UserId和PasswordVerificationToken? –

+0

UserId是一個Int和PasswordVerificationToken字符串 – user5297740

+2

看起來它與您發佈的代碼沒有任何關係 –

回答

1

利用這一點,以確保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視爲一個常量,除非您將它捕獲到變量中,如圖所示。