我在尝试使用类型化数据适配器在sql server中创建新行时遇到问题,其中主键设置为GUID,默认值为NewSequentialID()
列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 = "blah@blah.com"
.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
似乎不想使用NewSequentialID()默认值。
我可以手动创建GUID并以这种方式插入,但这不会创建SequentialID。
我错过了什么?
答案 0 :(得分:0)
更改TableAdapter的InsertCommand
,以便它创建GUID或调用任何返回它的标量值UDF:
如果您只想在sql-server中创建GUID,您还可以使用newid():
INSERT INTO Test (idTest, Value, Test)
VALUES (newid(),@Value,@Test);
您还可以use a Stored-Procedure作为执行该操作的InsertCommand
的CommandType,并通过输出参数返回实际值。
我最近问自己如何检索这些主键:Retrieve identity value from inserted record's primary key
如果你需要更多关于这个问题的信息,我将看看我是如何实现它的。无论如何,对于Direction
的参数,您需要InputOutput作为InsertCommand
。