Parallel ForEach with SQL inserts c#



我有一个如下所示的对象,但有大量数据,我们观察到插入我们的SQL数据库需要很长时间,因为我们使用普通foreach,主要思想是插入每个部门并获取生成的标识号,然后插入分配有该部门ID的嵌套员工。

<Sample>
<Departments>
<Department>
<Name>HR</Name>
<Employees>
<Employee>
<Name>Marco</Name>
</Employee>
<Employee>
<Name>John</Name>
</Employee>
<Employee>
<Name>Sarah</Name>
</Employee>
</Employees>
</Department>
<Department>
<Name>IT</Name>
<Employees>
<Employee>
<Name>Ali</Name>
</Employee>
<Employee>
<Name>Roberto</Name>
</Employee>
<Employee>
<Name>Franco</Name>
</Employee>
</Employees>
</Department>
</Departments>
</Sample>

我们尝试使用Parallel.ForEach来提高性能,确实如此,但是我们在@@IDENTITY上遇到了另一个问题,因为 Parallel.ForEach 中的运行任务之间存在重叠,因为我们发现一名员工被分配到另一个部门。

需要...我需要加快这个过程,要么我使用Parallel.ForEach要么foreach......有什么想法吗?

顺便说一句...我们使用分类ADO.NET调用包含普通INSERT INTO命令的存储过程

可以使用 guid 作为表中的主键。它将帮助您避免@@IDENTITY问题。 首先你应该生成新的 guid 标识,谢谢 将生成的值插入一行

最新更新