![]() |
1
4
这以前真的很容易。您只需将column.autoincrementseed和column.autoincrementstep都设置为“-1”。这样,添加的新行将具有-1、-2等ID。然后,存储的procs或tsql代码将只是:
然而,微软在他们的英雄主义智慧改变了这一切更糟的ADO.NET 4.0。我不太确定它什么时候改变了,但是它们在autoincrement列上有一个底层的私有字段,它将该列的当前值存储在里面。所以,假设在数据库中,最后插入的值是“52”,那么,它现在隐藏在autoincrement列中。这导致了现在多用户应用程序的巨大问题,我不能再使用“-1”技巧了,因为它开始从上一个自动递增值倒数。我甚至试图通过反思来改变这一点,但这并没有什么好处。我讨厌微软在ADO.NET中打破了这一点,但他们坚持他们的口号:“不,我们不会修复bug x(这不会真正影响任何用户),但我们将实现一个全新的东西,它会破坏你曾经工作过的所有代码。” |
![]() |
2
0
在执行fill方法之前,使用autoincrement创建一个数据列, 编辑:
|
![]() |
3
0
必须从SQL返回标识。但我不再确定确切的语法了 尝试
或
|
![]() |
4
0
问题出在所提到的数据关系中。出于某种原因,由于这种数据关系,“子”行没有插入数据库,并且它们的ID也没有更新为实际的ID,尽管数据表有“刷新数据表”检查(在配置/高级设置中)。 我已经移除了数据关系,并手工完成了所有工作。以下代码为我提供了诀窍:
|