Мне нужно реплицировать базу данных 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
Спасибо