我刚刚开始将旧的Web应用程序转换为新的结构。

我在MS SQL Server 2012数据库中创建了一个新设计的供应商表,我正在将供应商数据从旧数据库传输到该表中。

我有一个使用新数据库作为数据上下文的C#MVC应用程序设置。目前,应用程序从旧的应用程序数据库中获取数据,对其进行检查,并在必要时对其进行重新格式化,然后以所需的格式将其插入到新的数据库中。

但是,由于应用程序的用户已经习惯了旧数据库中的供应商ID,因此我不想更改ID,但是由于新供应商表中的ID字段是自动递增的,因此不会复制ID从旧数据库。它只是简单地增加。

是否有人知道,在项目的初始导入阶段,可以在C#代码中以编程方式覆盖自动增量。从旧系统导入数据后,我想恢复为自动增量。

最佳答案

您可以在一堆插入期间临时关闭服务器上的身份生成,然后再次打开。尝试将此查询提交到服务器:

SET IDENTITY_INSERT dbo.sometable ON ;

INSERT INTO dbo.sometable (id,.......) VALUES (456,.......) ;
INSERT INTO dbo.sometable (id,.......) VALUES (276,.......) ;
INSERT INTO dbo.sometable (id,.......) VALUES (387,.......) ;

SET IDENTITY_INSERT dbo.sometable OFF ;


它只是禁用身份创建,然后执行插入操作(请注意,列和值列表的确包含ID),然后恢复默认行为。

关于c# - 插入数据库时​​如何以编程方式覆盖Auto_Increment值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19328354/

10-14 20:58
查看更多