平行的ForEach导致SQL查询不起作用

本文关键字:SQL 查询 不起作用 导致 ForEach | 更新日期: 2023-09-27 17:58:40

我正在遍历一组数据(下面的查询示例)以验证一些信息。当我使用Parallel时。对于Each,获取第二页结果的SQL命令返回为空。如果我中断return语句并将活动行移回存储库,它将返回我要查找的结果。更改平行线。ForEach到一个标准的C#ForEach可以按预期工作。

查询示例:

SELECT TOP 500
        StudentID,
        StudentName
    FROM Student
    WHERE StudentVerified IS NULL

代码示例。。。

while(true)
{
    using(var rep = new Repository())
    {
        var students = rep.GetStudents();
        if (students.Length == 0) return false;
        Parallel.ForEach(students, (student) =>
        {
            rep.StudentVerified(student.StudentID, true);
        });
    }
}

如果您能找出为什么第二页的结果是空的,我们将不胜感激。谢谢

平行的ForEach导致SQL查询不起作用

从您的评论中,您似乎正在请求之间共享SqlConnection。该类不是线程安全的。SqlConnection被优化为具有许多短寿命连接,根据需要创建连接,然后在使用using块完成后将其处理掉。