所以我有以下要求
开始交易
- BULK INSERT 记录到 TableA
- 获取 TableA 中最近添加的行的 ID,使用 LINQ 更新内存中的关联记录
- BULK INSERT 更新的记录到 TableB
- 获取 TableB 中最近添加的行的 ID,使用 LINQ 更新内存中的关联记录
- BULK INSERT 更新的记录到 TableC
- 获取 TableC 中最近添加的行的 ID,使用 LINQ 更新内存中的关联记录
- BULK INSERT 更新的记录到 TableF
- 获取 TableF 中最近添加的行的 ID,使用 LINQ 更新内存中的关联记录
- BULK INSERT 更新的记录到 TableD
- 获取 TableF 中最近添加的行的 ID,使用 LINQ 更新内存中的关联记录
- 最后,将记录 BULK INSERT 插入 TableE
提交交易
我只是对每个表进行批量复制,每次都使用 select 语句返回生成的 id,将它们映射到下一组记录,然后重复。但是我想知道一种更好的方法来处理这种情况,因为目前运行它需要一段时间(在上面的算法中,每个 SQL BULK COPY 语句平均 500 条记录大约需要 20 分钟)。我想在我的 DbContext 对象上调用 Refresh()(我有 ORM 设置,但我使用 SQLBulkCopy 进行批量插入),然后以这种方式访问生成的 IDS,但我认为这也不是一个好主意。请问我能做些什么来改善这一点?任何建议将不胜感激。先感谢您。