У меня возникли проблемы с попытками создания новых строк в SQL-сервере с типизированным адаптером данных, где первичный ключ устанавливаются в GUID и значение по умолчанию является NEWSEQUENTIALID()NEWSEQUENTIALID и напечатал DataAdapters
Колонка friendInviteID является GUID, и имеет значение по умолчанию (NEWSEQUENTIALID)
Using myDT As New DAL.mbrFriendInvites.mbrFriendInvitesDataTable
Using myTA As New DAL.mbrFriendInvitesTableAdapters.mbrFriendInvitesTableAdapter
Dim row As DAL.mbrFriendInvites.mbrFriendInvitesRow = myDT.NewmbrFriendInvitesRow
With row
.friendInviteID = Nothing
.mbrID = 11
.appID = 2
.contactEmail = "[email protected]"
.contactName = "blah blah"
.timesSent = 0
End With
myDT.AddmbrFriendInvitesRow(row)
Dim result As Integer = myTA.Update(myDT)
HttpContext.Current.Response.Write("rows updated: " & result)
End Using
End Using
Когда я вставить новую строку с помощью описанного выше способа, SQL Server устанавливает значение friendInviteID к: 00000000-0000-0000-0000-000000000000
Он, похоже, не хочет использовать e Значение по умолчанию NewSequentialID().
Я могу создать GUID вручную и вставить его таким образом, но это не создаст SequentialID.
Что мне не хватает?
Где вы использовали скалярную функцию как значение по умолчанию, в SQL-Server или в типизированном DataSet? Если это действительно сильный типизированный DataSet, есть также автогенерированная функция 'brFriendInvitesRow.setfriendInviteIDNull()', которую вы должны использовать. –
Он установлен в SQLServer как значение по умолчанию. Если я открою таблицу в студию управления сервером sql и вручную добавлю строку в таблицу, она автоматически добавит последовательный идентификатор - так что я знаю, что он работает на сервере sql. Нет setfriendInviteIDNull, потому что это первичный ключ и не может быть нулевым. –
Если это не может быть «null» в вашем DataSet, следует создать исключение или объяснить, почему «ничего» не переводится в GUID по умолчанию. Вы должны попытаться разрешить null в DataAdapter. –