为 Hibernate 的 HiLo 算法管理的列生成 ID

Generating ID for column managed by Hibernate's HiLo algorithm

情况:

问题:如何复制 NHibernate(可能还有 Hibernate)为了生成其中一个 ID 而经历的过程?我认为这将涉及获取和递增 hibernate_unique_key table.

中的值

这基本上就是我解决问题的方法:

declare @newid int;
set @newid = (select top 1 (@max_lo + 1) * next_hi) from hibernate_unique_key);
update hibernate_unique_key set next_hi = next_hi + 1;
insert into ExampleTable(Id, Column)
values (@newid, @Value);
select @newid;

这是使用 Dapper,并且在交易中

因为在我的例子中 max_lo 只是 1,所以我每次以这种方式插入一行时只 "lose" 1 个 ID