DataTable.Load () выдает ошибку «Не удалось включить ограничения», когда нет ограничений - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь загрузить данные из нескольких файлов 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?

...