首页 > 解决方案 > EF 6 并行处理查询结果(100 万条记录)

问题描述

我正在使用 EF 6 来查询我存储的数据库表animals

var results = _ctx.Animals.ToList();

然后我有几个方法需要处理某些类型的动物。

 public void ProcessDogs(List<Animal> data)
 {
        var dogs = data.Where(t=> t.Category == "dog").ToList();
        // do some other work on the dogs
 }

 public void ProcessCats(List<Animal> data)
 {
        var cats = data.Where(t=> t.Category == "cat").ToList();
        // do some other work on the cats
 }

 public void ProcessCamels(List<Animal> data)
 {
        var camels = data.Where(t=> t.Category == "camel").ToList();
        // do some other work on the camels
 }

如何以最佳方式并行处理从我的表返回的所有记录?我不能用async-await

标签: c#performanceentity-frameworkparallel-processingparallel.foreach

解决方案


简单的。一个线程读取项目,然后将它们排入队列进行处理,多个线程将它们取出并处理它们。一个线程足以处理数据读取,根据网络的性质,数据读取很可能是通过一根以太网电缆传输的。


推荐阅读