Я пытаюсь загрузить данные из нескольких файлов DBF в одну таблицу DataTable с помощью драйвера VFPOLEDB.1. Изначально это файлы DBF из базы данных FoxPro. Если схема исходного файла отличается от схемы целевого объекта DataTable, я получаю сообщение «Не удалось включить ограничения. Одна или несколько строк содержат значения, нарушающие ограничения ненулевого, уникального или внешнего ключа». Но когда я проверяю исходную и целевую схемы, AllowDBNull
имеет значение true для всех столбцов, а IsUnique
и IsKey
равны false для всех столбцов в исходном и целевом объектах.
DataTable target = new DataTable();
string directory = "the path to the directory with the DBF files";
foreach(string filename in filenames) {
string tableName = fileName.Replace(Path.GetExtension(fileName), ""); //remove extensions from filenames
string connectionString = @"Provider=VFPOLEDB.1;Data Source=" + directory + "\\" + fileName;
string selectSQL = "select * from [" + tableName + "]";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = new OleDbCommand(selectSQL, connection))
{
try
{
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
target.Load(reader);
}
catch(Exception ex)
{
//For a file with different schema ex.Message is "Failed to enable constraints...."
}
}
}
Документация для DataTable.Load () указывает, что как дополнительные, так и отсутствующие столбцы должны обрабатываться без ошибок. Я что-то упускаю? Возможно, это проблема, указанная c для драйвера VFPOLEDB.1?