Итак, у меня есть таблица в базе данных Oracle, которую я в основном пытаюсь реплицировать в C # вместе с ее первичным ключом. Я могу нормально загрузить таблицу, но затем, когда я пытаюсь добавить то же ограничение первичного ключа, что и таблица оракула, я получаю эту ошибку:
"These columns don't currently have unique values".
Вот код
DataTable dt = new DataTable(combine(owner, name));
string q = "select " + getColumnSelect(owner, name) +
" from " + combine(owner, name) + " " +
(where_clause ?? "") + " order by " + getOrderByKeys(owner, name);
// load the data table
OracleDataAdapter oda = new OracleDataAdapter(q, conn);
oda.FillLoadOption = LoadOption.PreserveChanges;
dt.BeginLoadData();
oda.Fill(dt);
dt.EndLoadData();
// now set primary keys
List<DataColumn> cols = new List<DataColumn>();
foreach (string key in getKeys(owner, name))
{
cols.Add(dt.Columns[key]);
}
// This is where it fails
dt.PrimaryKey = cols.ToArray();
return dt;
Теперь, используя точно такой же оператор выбора. Если я добавлю первичный ключ в таблицу данных до того, как заполню его, он работает просто отлично. Я в тупике.
РЕДАКТИРОВАТЬ: я забыл добавить, что это работает с той же таблицей (разные данные, конечно) в другой базе данных. И я проверил, что данные в нерабочей базе данных уникальны.