2015-11-29 48 views
1

我現在面臨一個問題後的概率,我是檢查是否有東西被做在日期的功能:LINQ到實體更新到MVC 5</p> <p>後更新MVC5

UserProfile user = bdd.UserProfile.FirstOrDefault(u => u.UserName == UserName); 
return bdd.Pointage.Any(p => Convert.ToDateTime(p.DateP) == Convert.ToDateTime(date) && p.User.UserId == user.UserId); 

但現在,在更新到MVC 5之後,當我執行這一個時,我有一個例外。

LINQ到實體無法識別方法「的System.DateTime ToDateTime(System.String)」

我已經在這裏閱讀與此異常的一些類似的問題,但我沒有找到任何解決方案,以及爲什麼它更新前工作,沒有後...

預先感謝您爲您的回答

回答

0

首先,因爲用戶可以爲空,FirstOrDefault返回null如果沒有任何USERPROFILE用戶名等於UserName,我們必須在return語句中進行檢查:

return user!=null 
&& bdd.Pointage.Any(p => Convert.ToDateTime(p.DateP) == Convert.ToDateTime(date) && p.User.UserId == user.UserId); 

此更改不會解決您的問題,但應該完成。您所遇到的問題與使用Convert.ToDateTime方法有關。這不是MVC的問題。發生這種情況是因爲我們無法在此情況下使用此方法。我們不能使用它的原因是,實體框架不知道如何正確地轉換此方法調用並將其發送到數據庫。

你能做什麼?我能想到的一個選擇取決於字符串的格式,p.DatePdate假設它們都具有相同的格式,您可以只依靠比較字符串值。

return user!=null 
&& bdd.Pointage.Any(p => p.DateP == date && p.User.UserId == user.UserId); 
+0

謝謝的,它使人們之前看到你的答案,我不爲什麼,我想如果是相同的格式轉換...謝謝:) –

+0

@MauriceChocoswiss歡迎您的傢伙。我很高興我的幫助 – Christos