平行的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);
});
}
}
如果您能找出为什么第二页的结果是空的,我们将不胜感激。谢谢
从您的评论中,您似乎正在请求之间共享SqlConnection
。该类不是线程安全的。SqlConnection
被优化为具有许多短寿命连接,根据需要创建连接,然后在使用using
块完成后将其处理掉。