К вашему сведению: я работаю на 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 и updatedRowSource следующим образом:
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 сбрасывается на исходную (теряется дополнительный добавленный параметр).
Кто-нибудь знает ответ на этот вопрос?