2013-07-30 35 views
2

我正在尝试使用CommandBuilder生成包含标识列的插入语句。对于测试数据生成目的,我希望能够插入值标识列之后标识插入已经在桌子上生成包含标识列的插入语句

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

的命令生成器确实产生插入语句启用的,但我不能让它包括标识列。我正在为许多表创建一个通用的解决方案,所以我想避免手动生成这些语句。有没有办法欺骗它包括所有列?

我也开不包括CommandBuilder的

回答

0

CommandBuilder的使用从数据库中获取模式,和命令建设过程中是不可配置的其他解决方案。唯一的选择可能是类似替换“instert into(”与“insert into(id,”和“values(”with“values(@id,”)。不要忘记在参数集合中添加@id参数。

0

使用纯SQL来做到这一点。

set IDENTITY_INSERT dbo.MyTable ON; 

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

set IDENTITY_INSERT dbo.MyTable OFF; 
+0

我想避免这种方法,因为,因为这意味着我必须手动建立插入 – TGH

+0

我不确定你所说的“手工打造”的意思是你反对使用c#字符串操作来“构建”一个SQL插入语句,可能在一个循环中,将用在'SqlCommand'中? –

相关问题