gpt4 book ai didi

c# - 在 EF6 中并行运行不同的存储过程

转载 作者:太空狗 更新时间:2023-10-29 23:44:53 25 4
gpt4 key购买 nike

我有许多不同的存储过程,我想以并行方式触发它们以提高我的 MVC 网络应用程序的性能。这些存储过程从多个来源收集信息并返回不同的数据类型。为了简单起见,假设我只有两个,返回不同的复杂数据类型:

  • ups_Proc1 返回 usp_Proc1 的列表
  • usp_Proc2 返回 usp_Proc2 的列表

等等....

我可以做这些数字中的一个,但它会在一系列中触发它们:

List<usp_Task1> taskOneResult = await db.usp_Task1(parms).AsQueryable()
.ToListAsync();
List<usp_Task2> taskTwoResult = await db.usp_Task2(parms).AsQueryable()
.ToListAsync();

我见过的解决方案使用 await Task.WhenAll()你传递了一系列任务,但我的是具有不同返回类型的任务。那么在处理不同的复杂返回类型时,如何并行触发多个存储过程呢?

更新 - 2015 年 5 月 20 日

终于找到了一个可行的解决方案,我相信它可以并行处理所有任务。我不得不使用 Task.Factory.StartNew()命令将每个函数创建为要传递给 Task.WaitAll() 的任务.

我将所有这些整合到一个包含 List<> 的新类中对于我正在使用的每个存储过程返回类型,允许我在那里处理我的所有业务逻辑。构造函数中的代码看起来有点像这样:

var task1 = Task.Factory.StartNew(() => CallStoredProc1(parms));
var task2 = Task.Factory.StartNew(() => CallStoredProc2(parms));

var taskList = new List<Task> { task1, task2 };

Task.WaitAll(taskList.ToArray());

CallStoredProc1()CallStoredProc2()是私有(private)无效方法,我在其中执行存储过程调用和处理数据转换。

非常感谢任何反馈!

最佳答案

想我会重新发布我的更新作为解决方案。

终于找到了一个可行的解决方案,我相信它可以并行处理所有任务。我不得不使用 Task.Factory.StartNew()命令将每个函数创建为要传递给 Task.WaitAll() 的任务.

我将所有这些整合到一个包含 List<> 的新类中对于我正在使用的每个存储过程返回类型,允许我在那里处理我的所有业务逻辑。构造函数中的代码看起来有点像这样:

var task1 = Task.Factory.StartNew(() => CallStoredProc1(parms));
var task2 = Task.Factory.StartNew(() => CallStoredProc2(parms));

var taskList = new List<Task> { task1, task2 };

Task.WaitAll(taskList.ToArray());

CallStoredProc1()CallStoredProc2()是私有(private)无效方法,我在其中执行存储过程调用和处理数据转换。

非常感谢任何反馈!

关于c# - 在 EF6 中并行运行不同的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com