实体框架 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 - 异步模式的主要内容,如果未能解决你的问题,请参考以下文章

所有实体框架方法都应该使用异步吗? [关闭]

OData $expand、DTO 和实体框架

Android异步框架RxJava 1.x系列 - 观察者模式及实现

存储库模式和聚合根模式和实体框架

Dubbo3高级特性「框架与服务」框架与服务的异步调用实践以及开发模式

实体框架和多个模式