EF 6 - 如何正确执行并行查询

2023-12-07

创建报告时,我必须执行 3 个涉及相同上下文的独立实体的查询。因为它们很重,所以我决定使用.ToListAsync();为了让它们并行运行,但是,令我惊讶的是,我得到了一个例外......

使用 EF 6 并行执行查询的正确方法是什么?我应该手动启动新任务吗?

Edit 1
代码基本上是

using(var MyCtx = new MyCtx())
{
      var r1 = MyCtx.E1.Where(bla bla bla).ToListAsync();
      var r2 = MyCtx.E2.Where(ble ble ble).ToListAsync();
      var r3 = MyCtx.E3.Where(ble ble ble).ToListAsync();
      Task.WhenAll(r1,r2,r3);
      DoSomething(r1.Result, r2.Result, r3.Result);
}

问题是这样的:

EF 不支持通过同一 DbContext 对象处理多个请求。如果同一 DbContext 实例上的第二个异步请求在第一个请求完成之前启动(这就是重点),您将收到一条错误消息,表明您的请求正在针对打开的 DataReader 进行处理。

Source: https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx

您需要将代码修改为如下所示:

async Task<List<E1Entity>> GetE1Data()
{
    using(var MyCtx = new MyCtx())
    {
         return await MyCtx.E1.Where(bla bla bla).ToListAsync();
    }
}

async Task<List<E2Entity>> GetE2Data()
{
    using(var MyCtx = new MyCtx())
    {
         return await MyCtx.E2.Where(bla bla bla).ToListAsync();
    }
}

async Task DoSomething()
{
    var t1 = GetE1Data();
    var t2 = GetE2Data();
    await Task.WhenAll(t1,t2);
    DoSomething(t1.Result, t2.Result);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF 6 - 如何正确执行并行查询 的相关文章

  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • 如何以编程方式删除受信任的根证书颁发机构中的证书?

    我需要能够从组织中的每台电脑中删除特定的证书 是的 我可以逐个座位 但我要到周四才能完成 而且我没有人力逐个座位 是否有使用 C 的编程方式来执行此操作 我认为你不需要编写任何 C 看看certmgr exe del http msdn m
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem

随机推荐

  • 将大量 CSV 文件导入 Matlab

    我有一个 1 6 GB 大的 CSV 文件 需要将其输入到 matlab 中 我必须经常这样做 并且需要它快速运行 该文件的格式为 20111205 00 00 2 99 18 6 E 20111205 00 00 2 99 18 5 E
  • 通过 iPhone 应用程序拨打电话号码

    嗨 iPhone 开发者 我想在我的 iPhone 应用程序中添加一个功能 它们是 拨打我的应用程序中的电话号码 通话结束后 重新启动之前的应用程序 我知道它在 iphone OS 3 2 中不可能 iOS 4 中可以吗 我需要你的帮助 你
  • 流中记录的排序

    以下是我的一些疑问 我有两个不同的流stream1 and stream2其中元素是有序的 1 现在当我这样做时keyBy在每个流上 顺序会保持不变吗 因为这里的每个组都只会发送给一个任务管理器 我的理解是记录将按小组顺序排列 请在这里纠正
  • 传单中圆形和多边形的联合

    我正在向传单地图添加两个圆圈和一个多边形 这是我绘制这三个形状的代码 有什么办法可以得到这三个形状的联合吗 leaflet options leafletOptions minZoom 0 maxZoom 18 m lt leaflet g
  • 如何在没有宏的情况下自动创建 Clojure `defn` 函数?

    最初是出于以下问题的动机 映射到 clojurescript 宏的调用 假设您想自动创建许多类似的函数 即不需要全部手写 假设我们有一些预先存在的函数 并且希望用处理程序包装它们以进行某种回调 defn do foo println I f
  • decltype 和成员函数(非指针)类型

    struct C int Foo int i return i typedef decltype C Foo type 由于不存在成员函数类型这样的类型 没有 是吗 我希望C type to be int int 但以下内容无法使用 Vis
  • Flex:无法调整外部加载的 SWF 内容的大小

    我有一个应用程序 我尝试加载外部 SWF 所以 我们有 我的应用 舞台的尺寸为 768x1280 缩放模式 EXACT FIT 外部 SWF 这是另一个应用程序 其阶段为 800x600 缩放模式 EXACT FIT 问题是 尽管我应用 s
  • Tomcat 未加载 MSSQL 驱动程序

    我正在尝试将我的 web 应用程序部署到 Tomcat 容器 但出现异常 指出找不到数据库的驱动程序 我在 Jetty 上本地测试了该应用程序 driver jar 由 Maven 提供 我将 driver jar 复制到 Tomcat 主
  • 将 (720, 720) 的 pandas DataFrame 重塑为 (518400, ) 2D 为 1D

    我有一个形状为 720 720 2D 的 DataFrame 我想将其转换为一维维度而不更改其值 我该如何使用 Pandas 来做到这一点 Use numpy ravel将 DataFrame 转换为 numpy 数组 np random
  • 未捕获的类型错误:无法读取 ReactJs 中 {Component}.render 处未定义的属性“映射”

    我将我的数组传递给这样的侧边栏组件的道具 我想在我的子组件中访问它 When i save the code and go to browser i am getting this error message import React Co
  • 如何在java中创建类型安全的泛型数组?

    我想在 java 中创建一个通用数组 维护 Java 通常提供的类型安全性 我正在使用这段代码 class Stack
  • “of”与“from”运算符

    之间唯一的区别是Observable of and Observable from参数格式 像Function prototype call and Function prototype apply Observable of 1 2 3
  • 1帧内使用opengl es在ipad上最多可以绘制多少个三角形?

    ipad上一帧最多可以画多少个三角形 另外 用于绘制这些三角形的 gl 调用数量是否有限制 您在 iPad 上遇到的三角形总数的唯一限制是内存大小以及您希望渲染的速度 发送的顶点越多 应用程序将使用的内存就越多 渲染速度就越慢 例如 在我的
  • utf8' 编解码器无法解码位置 15 中的字节 0x89:起始字节无效

    这是我的项目的视图 其中我尝试使用 boto 将图像从本地系统上传到 s3 class ImageList generics ListCreateAPIView queryset Image objects all serializer c
  • 如何在gem5中启用ARM半主机?

    我尝试运行在 QEMU 上运行的半主机退出指令 mov r0 0x18 ldr r1 0x20026 svc 0x00123456 但是gem5似乎没有正确处理它并崩溃了 以下补丁将其添加到 baremetal py 但不添加到 fs py
  • jquery改变用户滚动的背景颜色

    jquery 是否有可能在用户向下滚动页面时背景动画从 50 白色变为 90 白色或其他 所以首先是颜色rgba 255 255 255 5 当用户滚动到颜色下方 210px 时become rgba 255 255 255 9 更新后的更
  • Darwin/MacOS 是否修改了 Bash?

    我想知道使用 Bash 内置命令的 Bash 脚本的可移植性 据我了解 每种 UNIX 风格都倾向于修改各种 UNIX 实用程序 但他们是否倾向于不理睬 Bash 和 Bash 内置函数呢 尤其是 MacOS 呢 据我所知 bash 在 M
  • 从 C++ 扩展中获取 MIME 类型

    有什么方法可以在给定文件扩展名的情况下获取 C 中的 MIME 类型吗 我读过有关 HKEY CLASSES ROOT 的内容 但老实说我不知道 如何使用它 我想要的是作为输入 string extension pdf string ext
  • SWT 是否分发可在任何受支持的操作系统上运行的 JAR?

    The SWT项目目前为每个受支持的操作系统维护一个可分发的版本 例如 swt 3 4 2 win32 win32 x86 zip swt 3 4 2 gtk linux x86 zip swt 3 4 2 carbon macosx zi
  • EF 6 - 如何正确执行并行查询

    创建报告时 我必须执行 3 个涉及相同上下文的独立实体的查询 因为它们很重 所以我决定使用 ToListAsync 为了让它们并行运行 但是 令我惊讶的是 我得到了一个例外 使用 EF 6 并行执行查询的正确方法是什么 我应该手动启动新任务