如何使实体框架异步执行

2024-04-17

我在 ASP.Net MVC 5 应用程序中遇到异步控制器问题。 我正在使用 Entity Framework 6 Code First 方法。

我有一个方法

public async Task<ActionResult> Index()
{
    using(var context = new MyDbContext())
    {
        var eventsTask = context.Events
            .Where(e => e.Enable)
            .ToListAsync();

        var countTask = context.Users
            .CountAsync();

        await Task.WhenAll(eventsTask, countTask);
        return View(new ViewModel()
        {
            Events = eventsTask.Result, 
            Count = countTask.Result
        });
    }
}

我这里有两个异步方法。我通过 MiniProfiler 分别测量了它们中的每一个。它们大约需要 85 毫秒。

但在我的方法中,我使用 Task.WhenAll() 运行它们。我相信它异步执行 Db 查询,并且两者都应该花费大约 85-90 毫秒。但需要~170-180。所以我让异步方法同步运行(相互跟随)。

我认为这是因为上下文。我有一个测试,当我删除上下文查询并使用 HttpClient 调用许多 api 方法时。它需要的时间等于其中更长的时间(3 个 api 调用,每个大约 500 毫秒。总共方法需要大约 600 毫秒)。我相信异步执行 EF 方法是可能的。

有谁知道解决办法


这实际上不应该起作用,而是抛出异常。我猜第一个查询在第二个查询开始之前就完成了。

EF6 不支持同一上下文上的多个异步操作。 https://stackoverflow.com/questions/24702183/does-entity-framework-support-parallel-async-queries

Either await每个查询(因此它们不会同时运行),或者为每个查询使用不同的上下文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使实体框架异步执行 的相关文章

  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 带有运算符语法的错误消息,但不带有函数语法的错误消息

    为什么我在调用 unary 时收到错误消息 使用运算符语法 如果我用函数语法调用它就可以了 现场演示 https godbolt org z j7AbeQ template
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 使用 OleDbCommandBuilder 时访问 SQL 语法错误

    我要在 C 中使用 OleDbDataAdapter 在 Access 数据库中插入数据 但收到错误消息INSERT INTO 命令中的语法错误 BackgroundWorker worker new BackgroundWorker Ol
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • dnorm 是如何工作的?

    我对统计和 R 很陌生 也许这是一个非常微不足道的问题 但我不太明白这是如何工作的 假设我使用dnorm 5 0 2 5 这意味着什么 我看到一些资源 他们告诉我这个函数计算密度曲线中点的高度 现在我再次读到 在连续分布中 数字的确切概率为
  • 将 collections.namedtuple 与 ProcessPoolExecutor 一起使用在某些情况下会陷入困境

    gt gt gt import concurrent futures gt gt gt from collections import namedtuple gt gt gt 1 Initialise namedtuple here gt
  • cron 的替代品? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有谁知道 cron 有一个好的替代品吗 我想要一些可以在不同时区运行的东西 您可以考虑Quartz http www opensymphony
  • SFML 2.1 架构 x86_64 错误的未定义符号

    我最近安装了 SFML 2 1 并尝试从终端编译和运行 而不是 Xcode 他们在其网站上有示例程序http www sfml dev org tutorials 2 0 start linux php http www sfml dev
  • 使用 CSS 选择器制作棋盘图案

    我有一个 div 元素列表 当前使用 CSS 浮动在两列中显示 我想 替换 这些元素的边框颜色 我在引号中使用了交替 因为我真正想要的是每个 行 中的两个 div 交替 下面是我想要的最终状态的示例 1blue 2green 3green
  • 集群环境下的Spring Singleton

    正如中所讨论的this https stackoverflow com questions 1194129 singleton in cluster environmentpost 不适合使用单例聚集的环境 因为不同 JVM 中有多个单例对
  • 卡尔曼滤波器和内部状态变量的质量

    我正在尝试为 Android 开发运动检测应用程序 应用程序应该能够跟踪手机在空间中的运动并将其映射到计算机屏幕上的运动 我正在使用 3 轴加速度计 由于数据非常嘈杂 我正在使用卡尔曼滤波器 内部状态是 6 个分量向量 speed x sp
  • PHP 字符串分割

    我需要将一个字符串拆分为 2 2 3 3 个字符的块 并且可以通过使用 unpack 在 Perl 中执行此操作 unpack A2A2A3A3 thisisloremipsum 然而 相同的函数在 PHP 中不起作用 它给出以下输出 Ar
  • Google 地点详细信息 API 中的语言不一致

    我在我的服务器上使用 Google Place Details API 来存储有关某个地点的信息 使用placeId由客户发送 我面临着有关结果语言的问题 当该地点是城市或该城市中的地址时 结果的语言会有所不同 即使在查询中指定了语言也是如
  • Excel VBA onkey 宏可在另一个宏运行时工作

    我有一个宏 可以让您使用箭头键移动标记的单元格 这是将其向下移动的代码 Sub MoveMarkedDown Dim noDo As Boolean With myMarkedCell Select Case Row Case Is gt
  • VSCode 中是否有快捷方式可以在调试 REPL 中执行当前行或选择?

    我正在使用 Python 进行开发 并且通常在集成终端中运行代码Shift Enter 不过调试的时候过程似乎比较复杂 我需要复制代码 将焦点移至调试 REPL Ctrl Shift Y 粘贴 运行并将焦点移回编辑器 有没有更简单的方法来做
  • pip3 安装不起作用 - 没有名为“pip._vendor.pkg_resources”的模块

    当尝试安装 Python 3 的软件包 在 Ubuntu 中 时 使用pip3 install packageName or sudo pip3 install packageName 我收到以下错误消息 Traceback most re
  • 从数据库上传模型时丢失数据注释

    我有一个大数据库现有数据库可以与之通信 并且我首先使用 EF 5 0 数据库 我遇到的问题是 如果我创建任何数据装饰 例如 stringlength 50 在课堂上 然后上传数据库 当我 从数据库上传 时 所有数据注释都消失了 我该怎么做才
  • 如何禁用/更改 ion-nav-view 中视图之间的动画

    我开始了一个 Ionic 选项卡项目 这个项目带来了视图之间的默认动画 进入时从左到右 返回时从右到左 我想通过指定两种类型的视图动画来保留对此的控制 从下到上 没有动画 到目前为止 我尝试按如下方式禁用动画 正如建议的那样离子论坛主题 h
  • Rails:渴望加载 as_json 包括

    render json gt playlist gt playlist description songs gt playlist songs as json include gt playlist songs gt only gt id
  • 在 Qt 中检查 QObject 派生类类型的正确方法

    假设我有两门课 class A public QObject class B public QObject 那我去 QObject a new A QObject b new B 现在 我如何确保 a 是A类的实例 而 b 是B类的实例 目
  • numpy.unique 生成的列表在哪些方面是唯一的?

    如果您输入一个包含一般对象的数组numpy unique 结果将是唯一的 基于什么 我努力了 import numpy as np class A object probably exists a nice mixin for this P
  • SQL Server 优先级排序

    我有一个包含任务的表 我想根据任务的优先级对这些任务进行明确的排序 我能想到的唯一方法是通过uniqueint 列 根据优先级对任务所在位置进行索引 即 1 为前 1000 为低 问题是 假设我想更新任务并将其优先级设置为较低的值 我将必须
  • Eclipse 插件导出时出现错误:“无法解析导入 javafx.embed.swt”

    我正在尝试导出 Eclipse 插件 这只是我从此处的示例创建的一个 Eclipse 视图 http help eclipse org mars index jsp nav 2F2 0 http help eclipse org mars
  • 如何使实体框架异步执行

    我在 ASP Net MVC 5 应用程序中遇到异步控制器问题 我正在使用 Entity Framework 6 Code First 方法 我有一个方法 public async Task