FYI:我正在运行dotnet 3.5 SP1
我正在尝试在使用SqlDataAdapter和SqlCommandBuilder执行更新后,从我的数据集中检索标识列的值。在执行SqlDataAdapter.Update(myDataset)之后,我想能够读取
(注意:我不想显式编写新的存储过程来完成此操作!)
经常发布的一种方法http://forums.asp.net/t/951025.aspx修改SqlDataAdapter.InsertCommand和UpdatedRowSource,如下所示:
我正在尝试在使用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集合会重置为原始状态(丢失额外添加的参数)。
有人知道答案吗???