[asp.net-mvc]Linq 到 MVC5 的更新后的实体问题

发布时间: 2017/3/25 9:32:21
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我更新到 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 到实体不能识别的方法 ' System.DateTime ToDateTime(System.String)'

我在这里读过一些类似的问题,与此异常,但是我找不到任何解决办法,以及为什么它之前的更新和后的没有工作......

提前谢谢你的答案

解决方法 1:

首先,因为用户可以为 null, FirstOrDefault 则返回 null,如果没有任何用户配置文件的用户名与等于用户名,我们必须将返回语句中进行检查︰

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);
赞助商