在EntityFramework将6.0更新到6.1.3之后,仍然没有异步方法吗?

Rob*_*ert 3 c# entity-framework asp.net-mvc-4 entity-framework-6

我有一个通过EntityFramework 6.0与数据库对话的ASP.NET MVC4。DbContext是使用EDMX设计器(数据库优先)创建的。该应用程序针对.NET Framework 4.0。

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

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

Successfully installed 'EntityFramework 6.1.3' to MyProject
Run Code Online (Sandbox Code Playgroud)

之后,我运行Build-> Clean Solution,然后重新构建所有内容。接下来,我确保控制器包含以下using语句(除其他语句外):

using System.Data.Entity;
using System.Threading.Tasks;
Run Code Online (Sandbox Code Playgroud)

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

using (MyEntities db = new MyEntities())
{
    var dp = await db.DataPoints.FirstOrDefaultAsync(x => x.Id == DataPointId);
}
Run Code Online (Sandbox Code Playgroud)

尝试构建时,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?)
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ary 5

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

然后打开web.config,然后将元素的targetFramework属性设置为httpRuntime您要定位的版本。

  • 转到4.6.x或4.5.2,对4.5.x的支持已经结束。 (3认同)