EntityFramework更新6.0到6.1.3后仍然没有异步方法?

时间:2016-04-04 11:45:39

标签: c# entity-framework asp.net-mvc-4 entity-framework-6

我有一个ASP.NET MVC4,它通过EntityFramework 6.0与数据库通信。 DbContext是使用EDMX设计器创建的,具有数据库优先。该应用程序的目标是.NET Framework 4.0。

为了能够使用像.FirstOrDefaultAsync()这样的新异步方法,我尝试将EF升级到当前的稳定版本6.1.3。

所以我在Nuget控制台中运行了Update-Package EntityFramework。花了几秒钟,没有出现错误消息,安装结束时:

Successfully installed 'EntityFramework 6.1.3' to MyProject

之后,我运行 Build - >清洁解决方案 ,然后重建所有内容。接下来,我确保我的控制器包含这些使用语句(除了其他语句):

using System.Data.Entity;
using System.Threading.Tasks;

但是,我仍然无法使用任何异步方法,它们根本就找不到。这是一个例子:

using (MyEntities db = new MyEntities())
{
    var dp = await db.DataPoints.FirstOrDefaultAsync(x => x.Id == DataPointId);
}
Intellisense将

FirstOrDefaultAsync 标记为错误,但在尝试构建时,我收到此错误:

'DbSet<DataPoint>' does not contain a definition for 'FirstOrDefaultAsync' and no extension method 'FirstOrDefaultAsync' accepting a first argument of type 'DbSet<DataPoint>' could be found (are you missing a using directive or an assembly reference?)

我该怎么做才能解决这个问题?需要采取哪些措施?谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

您需要卸载所有NuGet软件包,将目标.NET版本更改为4.5或更高版本,然后重新安装所有NuGet软件包。

然后打开web.config,然后set the targetFramework attribute of the httpRuntime element打开您要定位的版本。