使用TableAdapter插入后返回不正确的ID

当我使用TableAdapter执行插入时:

 int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "", totalprice, amountpaid); 

它返回错误的id 1而它应该返回15。

如何获得正确的ID?

将执行模式属性设置为Scalar , 然后获取ID ,否则受行影响。 您不在查询向导中设置查询的属性属性窗口。

替代文字

(图28)

表适配器返回受影响的行数而不是id。

我假设你有一个带有自动生成值的pid列。

对这篇文章的回复有答案。

 select @@pid 

从相同的开放连接应该做到这一点。

1)存储过程:

存储过程的主体必须类似于:

 INSERT INTO MyTable (C1, C2, C3) VALUES (@c1, @c2, @c3); SELECT SCOPE_IDENTITY(); 

这里重要的部分是使用SELECT SCOPE_IDENTITY()而不是RETURN SCOPE_IDENTITY()。 编辑:如果您正在调用函数而不是存储过程,则使用RETURN将起作用。

2)表适配器:

右键单击表适配器,然后从上下文菜单中选择“添加查询”。 弹出TableAdapter查询配置向导:

  • 选择命令类型:选择“使用现有存储过程”。

  • 选择SP返回的数据形状:选择“单个值”。

  • 输入方法的适当名称,例如InsertXYZ

3)你的代码:

现在,当您在表适配器上调用方法InsertXYZ时,它将返回一个可以强制转换为Int32的对象。 该值是新记录的ID!

怎么样这篇文章ASP.NET tableadapter插入没有返回正确的标识值

我真的不知道c#但函数可能会返回受影响的行数,或者布尔值1表示true,0表示false表示?