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 后仍然没有异步方法?的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework 6.0 - 删除时的奇怪行为
如何从 NuGet 安装 EntityFramework 5.0(和其他旧版本)?
Entity Framework 6.0 Raw Sql 查看模型
EntityFramework 6.0.0-alpha3 - EdmxWriter.WriteEdmx() 在从 alpha2 更新到 alpha3 后失败