异步查询Asynchronous Queries

当在数据库中执行查询时,异步查询可避免阻止线程。 异步查询对于在胖客户端应用程序中保持响应式 UI 非常重要。 异步查询还可以增加 Web 应用程序中的吞吐量,即通过释放线程,以处理 Web 应用程序中的其他请求。 有关详细信息,请参阅使用 C# 异步编程

警告

EF Core 不支持在同一上下文实例上运行多个并行操作。 应始终等待操作完成,然后再开始下一个操作。 这通常是通过在每个异步操作上使用 await 关键字完成的。

Entity Framework Core 提供一组类似于 LINQ 方法的异步扩展方法,用于执行查询并返回结果。 示例包括 ToListAsync()ToArrayAsync()SingleAsync()。 某些 LINQ 运算符(如 Where(...)OrderBy(...))没有对应的异步版本,因为这些方法仅用于构建 LINQ 表达式树,而不会导致在数据库中执行查询。

重要

EF Core 异步扩展方法在 Microsoft.EntityFrameworkCore 命名空间中定义 。 必须导入此命名空间才能使这些方法可用。

  1. public async Task<List<Blog>> GetBlogsAsync()
  2. {
  3. using (var context = new BloggingContext())
  4. {
  5. return await context.Blogs.ToListAsync();
  6. }
  7. }