Итак, у меня есть таблица в базе данных Oracle, которую я в основном пытаюсь реплицировать на C# вместе с ее основным ключом. Я могу загрузить таблицу просто отлично, но потом, когда я пытаюсь добавить такое же ограничение первичного ключа в таблице оракула, я получаю эту ошибку:C# datatable primary key issue
"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;
Теперь, используя точно такой же оператор select. Если я добавлю первичный ключ в datatable, прежде чем заполнить его, он будет работать нормально. Я в тупике.
EDIT: Я забыл добавить, что это работает с одной и той же таблицей (разные данные, конечно) в другой базе данных. И я подтвердил, что данные в нерабочей базе данных уникальны.
Хороший улов. Это действительно проблема. Похоже, я вместо этого буду заполнять данные. – climbage