это возможно вместо инкрементирующего идентификационного номера, вместо этого у меня есть идентификатор GUID?
Конечно, проверьте здесь:
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;
Один параметр состоит в том, чтобы обычно иметь значение первичного ключа как 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
)