异步查询Asynchronous Queries
当在数据库中执行查询时,异步查询可避免阻止线程。 异步查询对于在胖客户端应用程序中保持响应式 UI 非常重要。 异步查询还可以增加 Web 应用程序中的吞吐量,即通过释放线程,以处理 Web 应用程序中的其他请求。 有关详细信息,请参阅使用 C# 异步编程。
警告
EF Core 不支持在同一上下文实例上运行多个并行操作。 应始终等待操作完成,然后再开始下一个操作。 这通常是通过在每个异步操作上使用 await
关键字完成的。
Entity Framework Core 提供一组类似于 LINQ 方法的异步扩展方法,用于执行查询并返回结果。 示例包括 ToListAsync()
、ToArrayAsync()
、SingleAsync()
。 某些 LINQ 运算符(如 Where(...)
或 OrderBy(...)
)没有对应的异步版本,因为这些方法仅用于构建 LINQ 表达式树,而不会导致在数据库中执行查询。
重要
EF Core 异步扩展方法在 Microsoft.EntityFrameworkCore
命名空间中定义 。 必须导入此命名空间才能使这些方法可用。
public async Task<List<Blog>> GetBlogsAsync()
{
using (var context = new BloggingContext())
{
return await context.Blogs.ToListAsync();
}
}