实体框架是否支持并行异步查询?

usr

当我们启动多个异步实体框架查询并并行运行它们时,会发生什么

它们是否在物理上并行执行?它们是否由Entity Framework序列化?这不受支持吗?是否会导致异常?

public async Task QueryDatabase()
{
    using (var context = new MyDbContext())
    {
        Task task1 = context.SomeTable1.ToListAsync();
        Task task2 = context.SomeTable2.ToListAsync();

        await Task.WhenAll(task1, task2);
    }
}
ken2k

根据版本6规范,不支持此功能

这应该抛出一个DbConcurrencyException异常的说法

在先前的异步操作完成之前,第二操作在此上下文上开始。使用“ await”来确保在此上下文上调用另一个方法之前,所有异步操作都已完成。不保证任何实例成员都是线程安全的。

EF将检测开发人员是否尝试一次执行两个异步操作并抛出

项目的代码库页面

启用数据库操作的异步执行实际上与在同一上下文中启用并发执行正交。在服务器方案的特定情况下,使用并发访问可能会对可伸缩性产生负面影响,因为这意味着为了处理单个请求,您将旋转任意数量的不同线程。所有线程都将与服务器其他并发请求所需的其他线程竞争资源(例如内存)。

实体框架核心也不支持这种情况

EF Core不支持在同一上下文实例上运行多个并行操作。在开始下一个操作之前,您应始终等待操作完成。通常,通过在每个异步操作上使用await关键字来完成此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使实体框架Linq查询异步

来自分类Dev

实体框架并行异步db操作按顺序运行

来自分类Dev

实体框架6是否支持.NET 4.0?

来自分类Dev

实体框架是否支持多线程?

来自分类Dev

如何模拟实体框架6异步投影查询

来自分类Dev

如何在实体框架支持的 datagridview 上使用多个查询?

来自分类Dev

实体框架是否支持用户定义的数据类型?

来自分类Dev

实体框架是否支持Oracle 10g?

来自分类Dev

实体框架6是否支持SQL Server 2000?

来自分类Dev

OrientDB是否支持数据分片和并行查询处理?

来自分类Dev

并行性与实体框架

来自分类Dev

是否可以在调用DbContext.SaveChanges之前查询实体框架?

来自分类Dev

实体框架/ ESQL查询是否删除前导零?

来自分类Dev

实体框架:查询缓慢

来自分类Dev

实体框架的子查询

来自分类Dev

实体框架选择查询

来自分类Dev

复杂实体框架查询

来自分类Dev

实体框架选择查询

来自分类Dev

慢查询实体框架

来自分类Dev

实体框架的子查询

来自分类Dev

实体框架查询SPA

来自分类Dev

实体框架的查询语言

来自分类Dev

如何使实体框架异步执行

来自分类Dev

实体框架6,加载实体异步/等待

来自分类Dev

实体框架6,加载实体异步/等待

来自分类Dev

实体框架查询嵌套查询

来自分类Dev

实体框架6-强制执行异步查询,编译时阻止同步调用

来自分类Dev

Orchard CMS是否将通过实体框架支持MVC4

来自分类Dev

实体框架是否针对已经运行的查询再次运行数据库查询?