我无法从我的DataRow中插入的记录(通过DataAdapter.Update)检索新的标识值。
我使用一个强类型的数据集作为DAL。我想要更新的表与SelectCommand中的其他表连接在一起,因此设计器不能自动生成insert-/ update -/delete-命令,也不能自动“刷新DataTable”(s. http://msdn.microsoft.com/de-de/library/dex7k4dw%28v=VS.100%29.aspx)。
我尝试在主键的DataColumn上设置AutoIncrement=true/false,但结果是相同的: last MAX- ID +1而不是数据库生成的实际ID(SQL-Server2005EP;pk数据类型:int,is identity:yes,Identity Increment:1)。
如果应用程序的另一个实例插入了第一个实例尚不知道的记录,并因此生成了一个已经存在的ID,则该值将是错误的f.e。
为了从db中检索新的身份,我在插入命令的CommandText后面添加了以下内容:
;SELECT CAST (SCOPE_IDENTITY() AS int) AS newIdRMA 此外,我还尝试将Output-Parameter添加到它的参数集合中:

这是我的代码的一部分,它更新数据库并设置新的ID(这不起作用):
Me.dsRMA.RMA.AddRMARow(newRMA) ' adding new row to the (strong typed) DataTable '
numRowsUpdated = daRMA.Update(Me.dsRMA.RMA) ' update via DataAdapter and insert the new record in DB '
DirectCast(Page, Services).IdRma = newRMA.IdRMA ' this is not the actual value from DB but old Max-ID +1 '编辑:
这是我的TableAdapter的InsertCommand及其参数集合的屏幕截图:

提前谢谢。
发布于 2011-03-14 20:45:28
我是这样做的:我将以下内容附加到我的插入命令的CommandText中:
--Return the new id
SELECT SCOPE_IDENTITY() 然后我将该查询的"ExecuteMode“设置为”标量“,而不是"NonQuery”。

所以我可以这样检索它:
newRMA = Me.dsRMA.RMA.AddRMARow()https://stackoverflow.com/questions/5298230
复制相似问题