我有一个如下所示的对象,但有大量数据,我们观察到插入我们的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 标识,谢谢 将生成的值插入一行