生成包含标识列的insert语句

时间:2013-07-30 15:50:57

标签: c# ado.net

我正在尝试使用CommandBuilder生成包含Identity列的insert语句。为了生成测试数据,我希望能够在表上启用Identity Insert后将值插入标识列

var sql = "Select * from Table";
var dataAdapter = new SqlDataAdapter(sql, conn);
dataAdapter.Fill(currentTable);
var cb = new SqlCommandBuilder(dataAdapter);

命令构建器确实会生成insert语句,但我不能让它包含identity列。我正在为许多表创建一个通用的解决方案,所以我想避免手动生成语句。有没有办法欺骗它包括所有列?

我也对其他不包含CommandBuilder的解决方案持开放态度

2 个答案:

答案 0 :(得分:0)

commandbuilder使用从数据库获取的模式,并且命令构建过程不可配置。唯一的选择可能是替换“instert into(”with“insert into(id,”和“values(”with“values(@id)”。也不要忘记将@id参数添加到参数集合中。

答案 1 :(得分:0)

使用纯SQL执行此操作:

set IDENTITY_INSERT dbo.MyTable ON;

insert into dbo.MyTable (id, ...) values (1, ...)
...

set IDENTITY_INSERT dbo.MyTable OFF;