C# 从另一个表创建临时表时,如何防止ID自动递增?

C# 从另一个表创建临时表时,如何防止ID自动递增?,c#,sql,sql-server-2008,tsql,datatable,C#,Sql,Sql Server 2008,Tsql,Datatable,我目前正在通过datatable将数据库的一部分导出为XML,并且还需要能够再次重新导入数据 为了批量导入数据,我一直在跟踪,但在导出并重新导入到临时表中之后,id值似乎在发生变化 我怀疑它们被扔掉了,临时表上的自动增量是使用 选择top 0*从tblJob导入;正在导致ID损坏,因为我编辑XML文件并重新导入时,它正在更新错误的行,以便在重新导入时保持标识完整: 首先,确保原始记录不再存在,因为我假设您的身份也是主键 第二, set identity_insert on [table] im

我目前正在通过datatable将数据库的一部分导出为XML,并且还需要能够再次重新导入数据

为了批量导入数据,我一直在跟踪,但在导出并重新导入到临时表中之后,id值似乎在发生变化

我怀疑它们被扔掉了,临时表上的自动增量是使用
选择top 0*从tblJob导入;正在导致ID损坏,因为我编辑XML文件并重新导入时,它正在更新错误的行,以便在重新导入时保持标识完整:

首先,确保原始记录不再存在,因为我假设您的身份也是主键

第二,

set identity_insert on [table]

import your records

set identity_insert off [table]

如果您正在执行批量插入任务,则在。。。映射?要启用标识插入

您可以让SqlBulkCopy知道您希望使用SqlBulkCopy选项保留源数据中的标识值,如下所示:


导入时不包括标识列。那就可以了。我如何使用现有的连接来实现这一点?VS希望SQLBulkCopy的构造函数使用一个字符串,而不是一个连接,但是如果我使用与上面相同的连接,它会出错,因为它可能已经连接好了。传入现有连接时会出现什么错误?
using (SqlBulkCopy bulk = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity))
{
    bulk.DestinationTableName = "#Prices";
    bulk.WriteToServer(table);

}