我在更新到MVC 5后面临另一个问题。
我有一个函数可以检查日期是否有事情发生:
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 to Entities无法识别方法'System.DateTime ToDateTime(System.String)'
我在这里读到了这个例外的一些类似问题,但是我没有找到任何解决方案,为什么它在更新之前有效,之后没有......
提前感谢您的回答
答案 0 :(得分:0)
首先,由于user可以为null,如果没有任何userprofile的用户名等于UserName,FirstOrDefault
将返回null,我们必须在return语句中进行检查:
return user!=null
&& bdd.Pointage.Any(p => Convert.ToDateTime(p.DateP) == Convert.ToDateTime(date) && p.User.UserId == user.UserId);
此更改不会解决您的问题,但应该完成。您遇到的问题与使用Convert.ToDateTime
方法有关。这不是MVC的问题。发生这种情况是因为我们无法在此上下文中使用此方法。我们无法使用它的原因是,实体框架不知道如何正确转换此方法调用并将其发送到数据库。
你能做什么?我能想到的一个选项取决于字符串的格式p.DateP
和date
。 如果它们都具有相同的格式,您可以依靠比较字符串值。
return user!=null
&& bdd.Pointage.Any(p => p.DateP == date && p.User.UserId == user.UserId);