FYI: я запускаю dotnet 3.5 SP1
Я пытаюсь получить значение столбца идентификатора в моем наборе данных после выполнения обновления (используя SqlDataAdapter и SqlCommandBuilder).
После выполнения SqlDataAdapter.Update(myDataset), я хочу, чтобы иметь возможность читать автоматически назначенное значение myDataset.tables(0).Rows(0)("ID")
, но это System.DBNull(несмотря на то, что строка была вставлена).
(Примечание: я не хочу явно писать новую хранимую процедуру для этого!)
Один метод, который часто размещается http://forums.asp.net/t/951025.aspx, изменяет SqlDataAdapter.InsertCommand и UpdateRowSource следующим образом:
SqlDataAdapter.InsertCommand.CommandText += "; SELECT MyTableID = SCOPE_IDENTITY()"
InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord
По-видимому, это, казалось, работало для многих людей в прошлом, но не работает для меня.
Другая техника: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=619031&SiteID=1 тоже не работает для меня, так как после выполнения SqlDataAdapter.Update параметр SqlDataAdapter.InsertCommand.Parameters коллекция reset к оригиналу (потеря дополнительного добавленного параметра).
Кто-нибудь знает ответ на этот вопрос?