实体框架 6 alpha 2 - 异步模式
Posted
技术标签:
【中文标题】实体框架 6 alpha 2 - 异步模式【英文标题】:Entities Framework 6 alpha 2 - Async Patterns 【发布时间】:2012-12-15 04:36:30 【问题描述】:我最近有一个使用 MVC 4、.NET 4.5 并使用 EF 5.0(数据库优先)使用 EF 5.0 DbContext 生成器的项目。然后我通过 Nuget Manager 升级到 EF 6.0 alpha 2。我想使用新的异步模式,但由于某种原因,我没有 .ToListAsync() 可用。我以类似的方式引用上下文:
public class HomeController : Controller
TestContext db = new TestContext();
public async Task<ActionResult> Index()
var keywords = await db.Keywords.ToListAsync();
return View(keywords);
这在 Database First 中不可用,而仅在 Code First 中可用吗?我怎样才能使上面的例子起作用?我正在使用 SQL Azure。
【问题讨论】:
【参考方案1】:异步。扩展方法在 EF 相关的System.Data.Entity.IQueryableExtensions
静态类中定义。所以你必须添加:
using System.Data.Entity;
在控制器类文件的开头以便能够调用它们。
【讨论】:
我花了一天多的时间!在阳光下尝试一切!直到我读到这篇文章。非常感谢!!! 叹息【参考方案2】:我认为你可以这样使用Task.Run
public async Task<ActionResult> Index()
var keywords = await Task.Run(() => db.Keywords.ToList());
return View(keywords);
【讨论】:
我想说的是,为什么 .ToListAsync() 在应该可用的时候对我不可用?以上是关于实体框架 6 alpha 2 - 异步模式的主要内容,如果未能解决你的问题,请参考以下文章
Android异步框架RxJava 1.x系列 - 观察者模式及实现