TableAdapter.insert - получить идентификатор (с SCOPE_IDENTITY)? (SQL Server) - PullRequest
0 голосов
/ 12 июня 2019

Я не могу понять, как получить идентификатор записи, созданной командой tableadapter.insert ().

Я прочитал несколько ответов на похожие вопросы, но большинство из них переключаются на то, как это сделать с помощью команд и ADO или с помощью хранимых процедур.

Самым близким, что я нашел, была рекомендация добавить SELECT SCOPE_IDENTITY () в конец инструкции INSERT.

https://www.screencast.com/t/BU3F73ds

INSERT INTO [zGrid Filters and Layouts]
                     (XML, UserID, Type, Global, LastModDt, SaveName)
VALUES        (@XML,@UserID,@Type,@Global,@LastModDt,@SaveName);  

SELECT        SCOPE_IDENTITY()

Но когда я это делаю, я получаю ошибку "не могу разобрать", когда нажимаю кнопку Готово.

https://www.screencast.com/t/7R5MN3cF

Затем я также установил для Execute значение Scalar.

https://www.screencast.com/t/w91RECeLUL2

И если я обхожу эту ошибку, я получаю ошибку времени выполнения, в которой говорится, что мне нужно объявить скалярное значение.

https://www.screencast.com/t/RbNuizo65vu

Я подтвердил свой код INSERT (SQL). Фактически, я подтвердил, что он вставляется без строки SELECT SCOPE_IDENTITY.

Dim ID As Int32 =
    DataTableGridFiltersLayoutsTableAdapter1.InsertRecord(xmlString, 
    1, "F", 1, Now, "My New Block 3")

Я включил результаты выше.

Чтобы уточнить, я хочу выяснить это, используя сгенерированный табличный адаптер - если ответ не будет, вы не можете сделать это с помощью табличных адаптеров (что кажется неправильным).

Я нашел бесчисленное множество статей, в которых говорится, что это возможно, но ни одна из них на самом деле не показывает вам, как это сделать - за исключением строки tableadapter.insert.

Любая помощь приветствуется.

...