создать ac # datatable объект с GUID в качестве идентификатора?

2

это возможно вместо инкрементирующего идентификационного номера, вместо этого у меня есть идентификатор GUID?

Теги:
datatable

2 ответа

5
Лучший ответ

Конечно, проверьте здесь:

http://msdn.microsoft.com/en-us/library/system.data.datatable.primarykey(VS.71).aspx

   // Create a new DataTable and set two DataColumn objects as primary keys.
   DataTable myTable = new DataTable();
   DataColumn[] keys = new DataColumn[1];
   DataColumn myColumn = new DataColumn();
   myColumn.DataType = System.Type.GetType("System.Guid");
   myColumn.ColumnName= "ID";
   // Add the column to the DataTable.Columns collection.
   myTable.Columns.Add(myColumn);
   keys[0] = myColumn;
   // Set the PrimaryKeys property to the array.
   myTable.PrimaryKey = keys;
  • 0
    атрибут PrimaryKey является DataColumn [], я получаю ошибку из вашего кода.
  • 0
    извини, дай этому шанс. Это массив, потому что вы можете установить первичный ключ из нескольких столбцов.
Показать ещё 1 комментарий
1

Один параметр состоит в том, чтобы обычно иметь значение первичного ключа как NEWID() для присвоения GUID переменной, объявленной как тип данных uniqueidentifier

Другой вариант - иметь последовательные GUID, используя эту функцию NEWSEQUENTIALID(), доступную в sqlserver. Однако MSDN заявляет: если конфиденциальность является проблемой, не используйте эту функцию. Можно угадать значение следующего сгенерированного GUID и, следовательно, получить доступ к данным, связанным с этим GUID.

Пример SqlQuery с использованием newid()

CREATE TABLE cust
(
 CustomerID uniqueidentifier NOT NULL
   DEFAULT newid(),
 Company varchar(30) NOT NULL,
 ContactName varchar(60) NOT NULL, 
 Address varchar(30) NOT NULL, 
 City varchar(30) NOT NULL,
 StateProvince varchar(10) NULL,
 PostalCode varchar(10) NOT NULL, 
 CountryRegion varchar(20) NOT NULL, 
 Telephone varchar(15) NOT NULL,
 Fax varchar(15) NULL
)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню