当列不是表中的第一个列时,检索AutoIncrement键值

时间:2010-01-14 07:03:41

标签: subsonic subsonic2.2

我有一个关于如何在SQL Server 2005中检索列的自动增量或标识值的问题,当所述列不是表中第一个声明的列时。

我可以通过发出以下代码来获取表的生成值:

MyTable newRecord = new MyTable();
newRecord.SomeColumn = 2;
newRecord.Save();
return newRecord.MyIdColumn;

其中有多少其他列构成该特定表的主键,但是声明的第一列必须是标识列,否则这不起作用。

我的问题是我必须将我的代码与其他不可及的表集成,并且它们的标识列不是这些表中的第一列,所以我想知道是否有适当的解决方法问题,或者我是否因使用SELECT @@ IDENTITY这些内容而无法手动获取该值?

非常感谢您的所有帮助!

1 个答案:

答案 0 :(得分:0)

来自“ewww”部门:

这是我现在的解决方法,希望有人可以提出更好的解决方案。

MyTable newRecord = new MyTable();
newRecord.SomeColumn = 2;
newRecord.Save();
CodingHorror horror = new CodingHorror();
string SQL = "SELECT IDENT_CURRENT(@tableName)";
int newId = horror.ExecuteScalar<int>(SQL, "MyTable");
newRecord.MyIdColumn = newId;
newRecord.MarkClean();
return newRecord.MyIdColumn;