0

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

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

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

无论有多少其他列构成该特定表的主键,它都可以正常工作,但声明的第一列必须是标识列,否则这不起作用。

我的问题是我必须将我的代码与我无法触及的其他表集成,并且它们的标识列不是这些表中的第一列,所以我想知道我的问题是否有适当的解决方法,或者如果我坚持使用类似于 SELECT @@IDENTITY 的东西来手动获取该值?

非常感谢您的所有帮助!

4

1 回答 1

0

来自“ewww Gross”部门:

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

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;
于 2010-01-14T11:01:23.510 回答