我正在尝试使用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的解决方案持开放态度
答案 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;