Автоматическая вставка номера с помощью OleDbDataAdapter - PullRequest
0 голосов
/ 16 ноября 2010

Мне нужно реплицировать базу данных MS Access в .NET через XML-файл, который я получаю через Интернет.Целевая база данных должна быть точно такой же, как и исходная (тот же контент и те же PK).

Поскольку у меня много таблиц для копирования, я использую OleDbDataAdapter, который генерирует для меня запросы на вставку.Это хорошо работает, даже для таблиц, у которых автоматически генерируется Guid в качестве первичного ключа.Команда INSERT, сгенерированная OleDbCommandBuilder (cmdBuilder.GetInsertCommand()), имеет поле Guid в своих параметрах, поэтому вставленный guid совпадает с исходной базой данных.

Единственная проблема, с которой я сталкиваюсь, - это таблицы с автономным номеромцелое число как их первичный ключ.Сгенерированная команда INSERT не включает поле PK, поэтому введенный номер не соответствует исходной базе данных, если в последовательности есть дыры.

Есть ли где-то скрытое свойство, которое будет включать столбец автонумерации, когдакоманда вставки сгенерирована?

Вот мой код:

public void InsertContentFromXml(string tableName, string xml)  
{  
   using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [" + tableName + "]", _connection))
   {  
      OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);  
      OleDbCommand insertCommand = builder.GetInsertCommand();  
      // insertCommand does not have the autonumber column in its insert query  
   }  
}

Таблица имеет 3 поля:
IdReport [целое число / автонумерация *
ReportName [Text]
ReportType [Text]

Команда вставки генерирует 2 параметра: ReportName и ReportType

Спасибо

1 Ответ

0 голосов
/ 16 ноября 2010

Вам необходимо самостоятельно создать команду INSERT и ее параметры.

...