Я импортирую таблицу от Oracle DataBase, с помощью VB.NET dataAdapter. Я использую команду "заливки", чтобы добавить импортированные данные к DataSet. Как возможно определить определенный столбец DataTable как PrimaryKey, после того, как DataTable будет уже переполнен данными?
Вы можете установить первичный ключ таблицы следующим образом:
Dim table As New DataTable()
table.Columns.Add(New DataColumn("MyColumn"))
Dim primaryKey(1) As DataColumn
primaryKey(1) = table.Columns("MyColumn")
table.PrimaryKey = primaryKey
Чтобы иметь возможность использовать первичный ключ, вам необходимо убедиться, что все значения для данный столбец уникален.
Я в основном работаю на C #, и у меня есть несколько методов расширения, которые я использую для "упорядочивания" вызовов, которые мне нужно сделать, которые вы можете рассмотреть, переведя их в VB и используя:
public static void SetPrimaryKey(this DataTable value, string columnName)
{
value.PrimaryKey = new DataColumn[] { value.Columns[columnName] };
}
public static DataRow FindByPrimaryKey(this DataTable value, object key)
{
return value.Rows.Find(key);
}
// I can then do:
DataTable table = CallToRoutineThatGetsMyDataTable();
table.SetPrimaryKey("PKColumnName");
DataRow result = table.FindByPrimaryKey("valueToFindWith");
Если значения в столбце уникальны
table.PrimaryKey = new DataColumn[] { table.Columns["Id"] };
настройте имена столбцов.