2

我正在尝试使用 CommandBuilder 生成包含 Identity 列的插入语句。出于测试数据生成的目的,我希望能够在表上启用身份插入后将值插入身份列

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

命令生成器确实生成了插入语句,但我无法让它包含标识列。我正在为许多表创建通用解决方案,因此我想避免手动生成语句。有没有办法欺骗它以包含所有列?

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

4

2 回答 2

0

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

于 2013-07-30T15:57:57.667 回答
0

使用纯 SQL 来执行此操作:

set IDENTITY_INSERT dbo.MyTable ON;

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

set IDENTITY_INSERT dbo.MyTable OFF;
于 2013-07-30T17:06:47.917 回答