1
BGREX.BGREXDataTable _bRexDataTable = new BGREX.BGREXDataTable();
BGREX.BGREXRow bgRexRow = _bRexDataTable.NewBGREXRow();

bgRexRow.BGRes_TITLE = "abc";
bgRexRow.BGRes_VERSION = 123;

_bRexDataTable.AddBGREXRow(bgRexRow);
int rewEffected = Adapter.Update(_bRexDataTable);

已经使用上面的方法在数据库中插入记录,效果很好。现在我需要自动生成的新插入记录的 id(主键),而不是从受影响的行返回

Adapter.Update(_bRexDataTable);

看起来我需要 SCOPE_IDENTITY() 函数,但我不确定在设计器中将其包含在哪里,因为设计器对添加到实际插入查询中的以下语法不满意。虽然它在 sqlserver 管理控制台中运行良好

DECLARE @ROWI_D int

INSERT INTO TABLE
.....
.....
.....         
VALUES
("val1","val2",.......................)

SET ROW_ID = SCOPE_IDENTITY()
4

2 回答 2

2

我不确定使用带有命令的 sql 语句来执行此操作的方法。我并不是说它不能完成,我只是从不使用语句,总是通过 sprocs。

通过使用存储过程,您可以定义一个输出参数,您可以在存储过程中将其设置为等于SCOPE_IDENTITY(),然后确保将该参数传递给命令,同时将其方向设置为输出。

抱歉,我没有直接 sql 调用的解决方案,但也许其他有更多经验的人会加入进来。

这是讨论同一主题和可能答案的线程的链接。但没有验证建议的解决方案是否有效。

于 2009-12-04T22:03:30.253 回答
1

最好的方法是更改​​为在参数中返回所需值的存储过程。发布您现在进行更新的代码,我(或其他人)将向您展示如何重构它以使用存储过程。这并不难。

于 2009-12-05T01:15:11.777 回答