Как писал marc_s, в SQL Server 2008 еще нет последовательностей.
Но мы можем использовать некоторую хитрость для имитации поведения последовательностей. Иногда нам нужно сгенерировать идентификатор для некоторой таблицы без вставки каких-либо данных.
Или сгенерируйте идентификаторы для разных таблиц.
В такой ситуации я использую эту структуру.
Создать таблицу:
create table IdSequence (id int identity(1,1))
Затем я использую этот скрипт для генерации идентификатора:
begin tran
insert into IdSequence output inserted.id default values
rollback tran
В моем приложении это выглядит так:
public Int32 GetNextId()
{
Int32 id = 0;
using (var transaction = Session.BeginTransaction())
{
id = Session.CreateSQLQuery("insert IdSequence output inserted.id default values").UniqueResult<Int32>();
transaction.Rollback();
}
return id;
}