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

Posted

技术标签:

【中文标题】EntityFramework 更新 6.0 到 6.1.3 后仍然没有异步方法?【英文标题】:Still no async methods after EntityFramework update 6.0 to 6.1.3? 【发布时间】:2016-07-23 22:35:02 【问题描述】:

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

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

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

Successfully installed 'EntityFramework 6.1.3' to MyProject

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

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

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

using (MyEntities db = new MyEntities())

    var dp = await db.DataPoints.FirstOrDefaultAsync(x => x.Id == DataPointId);

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

'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?)

我可以做些什么来解决这个问题?需要采取哪些措施?感谢您的帮助!

【问题讨论】:

您的目标是什么 .NET 版本? 目标 .NET 版本是 4.0。 不。你知道,4.0 没有异步支持。更新到.... 4.5,我想。 【参考方案1】:

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

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

【讨论】:

转到 4.6.x 或 4.5.2,对 4.5.x 的支持已经结束。 做到了,谢谢。我直接去了 4.6.1(谢谢,Henk)。您需要为每个包运行 Update-Package -reinstall [PackageName]

以上是关于EntityFramework 更新 6.0 到 6.1.3 后仍然没有异步方法?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 6.0 和 oracle 11

Entity Framework 6.0 - 删除时的奇怪行为

如何从 NuGet 安装 EntityFramework 5.0(和其他旧版本)?

Entity Framework 6.0 Raw Sql 查看模型

EntityFramework 6.0.0-alpha3 - EdmxWriter.WriteEdmx() 在从 alpha2 更新到 alpha3 后失败

如何使用 AutoMapper 使用 EntityFramework 使用嵌套列表更新对象?