So I have a table in an Oracle database that I'm basically trying to replicate in C# along with its primary key. I can load the table just fine, but then when I try to add the same primary key constraint as the oracle table, I get this error :
"These columns don't currently have unique values".
Here's the code
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;
Now using the exact same select statement.. if I add the primary key to the datatable before I fill it, it works just fine. I'm stumped.
EDIT: I forgot to add that this works with the same table (different data of course) on another database. And I verified that the data in the non-working database is unique.