Как говорится в названии, я пытаюсь вставить несколько значений в SQL Server с помощью команды INSERT
, динамически создаваемой в коде.
Команда выглядит так:
INSERT INTO xLog (value1, value2, value3)
VALUES (@xLog);
И, следуя множеству других ответов на этом сайте, параметр @xLog
представляет собой массив SqlDataRecord
, который содержит коллекцию значений для вставки (я также следовал подходу DataTable
, который также был предложен, с тем же результатом, что и ниже).
Но когда я пытаюсь выполнить эту команду, я получаю такую ошибку:
The table type parameter '@xLog' must have a valid type name.
... что, как я понимаю, происходит потому, что SQL Server ожидает, что в базе данных будет создан настраиваемый тип, который следует структуре параметра. Скажем, я бы предпочел НЕ создавать этот пользовательский тип по причине X.
Итак, вопрос: есть ли способ вставить несколько строк в SQL Server с параметрами из кода .net без использования пользовательских типов ИЛИ хранимых процедур?
Спасибо за уделенное время.
Примечание для модов: я добавил теги vb.net и C#, потому что могу использовать код на обоих языках. Спасибо.
Ну да, я стараюсь избегать изменения существующих баз данных, поскольку это не всегда возможно. Если я могу сделать вставку, не создавая собственный тип SQL, мне не придется изменять какую-либо таблицу.
Вы можете использовать SqlBulkCopy (возможно, в сочетании с временной таблицей) или передать документ JSON или XML и уничтожить его в TSQL.
SqlBulkCopy это так. Спасибо.
Какой здесь финал? Вы просто пытаетесь избежать указания типов данных для предоставляемых вами значений? Почему именно так?