NewSequentialID и типизированные DataAdapters - PullRequest
0 голосов
/ 13 декабря 2011

У меня проблема с попыткой создания новых строк на сервере SQL с помощью адаптера типизированных данных, где первичный ключ имеет значение 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.

Чего мне не хватает?

1 Ответ

0 голосов
/ 13 декабря 2011

Измените TableAdapter на InsertCommand, чтобы он создавал GUID или вызывал любой UDF со скалярным значением, который его возвращает:

Нажмите здесь для просмотра в полном размере

enter image description here

Если вы просто хотите создать GUID в sql-сервере - вы также можете использовать newid () :

INSERT INTO Test (idTest, Value, Test)
VALUES    (newid(),@Value,@Test); 

Вы также можете использовать хранимую процедуру в качестве CommandType для InsertCommand, который делает все это и возвращает фактические значения через выходные параметры.

Я недавно спросил себя, как получить эти первичные ключи: Получить значение идентификатора из первичного ключа вставленной записи

Если вам нужна дополнительная информация по этому вопросу, я посмотрю, как я это реализовал. В любом случае вам нужно InputOutput как Direction для параметров InsertCommand.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...