Генерация оператора вставки, который включает столбец идентификаторов

Я пытаюсь использовать CommandBuilder для создания оператора вставки, который включает столбец Identity. Для целей генерации тестовых данных я хочу иметь возможность вставлять значение в столбец идентификаторов после того, как в таблице была включена функция вставки идентификаторов.

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

Построитель команд генерирует оператор вставки, но я не могу включить его в столбец идентификаторов. Я создаю общее решение для многих таблиц, поэтому я хочу избежать генерации операторов вручную. Есть ли способ обмануть, чтобы включить все столбцы?

Я также открыт для других решений, которые не включают в себя CommandBuilder

2 ответа

commandbuilder использует схему, полученную из базы данных, и процесс построения команд не настраивается. Единственной опцией может быть что-то вроде замены "instert into (" на "insert into (id") и "values ​​(" на "values ​​(@id,". Не забудьте также добавить параметр @id в коллекцию параметров).

Используйте чистый SQL для этого:

set IDENTITY_INSERT dbo.MyTable ON;

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

set IDENTITY_INSERT dbo.MyTable OFF;
Другие вопросы по тегам