C# 更新到MVC5后的Linq到实体问题

C# 更新到MVC5后的Linq到实体问题,c#,asp.net-mvc,entity-framework,linq,C#,Asp.net Mvc,Entity Framework,Linq,在升级到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.Us

在升级到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);
但是现在,在更新到MVC5之后,当我执行这个时,我有一个异常

LINQ to实体无法识别方法'System.DateTime ToDateTime(System.String)'

我在这里读到了一些类似的问题,但我没有找到任何解决方案,为什么它在更新之前工作,而在更新之后没有工作


提前感谢您的回答

首先,由于用户可以为null,
FirstOrDefault
返回null如果没有用户名等于username的userprofile,我们必须在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);

首先,由于user可以为null,
FirstOrDefault
如果没有用户名等于username的userprofile,则返回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);

谢谢,它在看到你的答案之前就做了,我不知道为什么我要转换,如果它是相同的格式。。。谢谢:)@MauriceChocoswiss不客气,伙计。我很高兴我帮助了Hank's,它在看到你的答案之前就做到了,我不知道为什么我要转换,如果它是相同的格式。。。谢谢:)@MauriceChocoswiss不客气,伙计。我很高兴我帮了忙