Генерация оператора вставки, который включает столбец идентификаторов
Я пытаюсь использовать 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;