Удалить первичный ключ в datatable - PullRequest
9 голосов
/ 09 августа 2011

есть ли способ удалить первичный ключ из таблицы данных или есть ли способ сначала удалить ограничения "PK", а затем удалить сам столбец?

Спасибо!

ОБНОВЛЕНИЕ:

 dtTable.Columns.Add(new System.Data.DataColumn("PRIMARY_KEY", typeof(System.Int32)));
 dtTable.PrimaryKey = new DataColumn[1] { dtTable.Columns["PRIMARY_KEY"] }; // throws an error
 dtTable.Columns["PRIMARY_KEY"].AutoIncrement = true;

Ответы [ 2 ]

19 голосов
/ 09 августа 2011

Вы можете удалить ключ primay, используя

DataTable.PrimaryKey = null;

Вы можете удалить столбец таблицы данных, используя

DataTable.Columns.Remove("column name here");
2 голосов
/ 04 июля 2013

Я обнаружил, что иногда после удаления PrimaryKey из DataTable:

MyDataTable.PrimaryKey = null;

Уникальный параметр остается верным для столбцов элементов удаленного PrimaryKey.

Мое решение:

 public static void KillPrimaryKey(DataTable LocDataTable)
{
  int LocPriKeyCount = LocDataTable.PrimaryKey.Length;
  string[] PrevPriColumns = new string[LocPriKeyCount];

  // 1. Store ColumnNames in a string Array
  for (int ii = 0; ii < LocPriKeyCount; ii++) PrevPriColumns[ii] = LocDataTable.PrimaryKey[ii].ColumnName;
  // 2. Clear PrimaryKey
  LocDataTable.PrimaryKey = null;
  // 3. Clear Unique settings
  for (int ii = 0; ii < LocPriKeyCount; ii++) LocDataTable.Columns[PrevPriColumns[ii]].Unique = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...