nhibernate中人类可读id的最佳策略

nhibernate中人类可读id的最佳策略,nhibernate,Nhibernate,实现人类可读数字的最佳方式是什么 当前已将标识设置为代理密钥 一直在考虑身份种子,但这会导致差距 如果我要在事务范围内生成,那么并发会产生影响吗 希望避免DBCC CHECKIDENT触发器 谢谢。基本上,NHibernate有两种最佳的id生成器策略:guid.comb和hilo/seqhilo(后者在支持序列的RDBMS上可用) hilo生成比guid更可读的完整id,因此在本例中这将是您的选择 不要担心差距;它们并不重要。基本上,NHibernate有两种最佳的id生成器策略:guid.c

实现人类可读数字的最佳方式是什么

当前已将标识设置为代理密钥

一直在考虑身份种子,但这会导致差距

如果我要在事务范围内生成,那么并发会产生影响吗

希望避免DBCC CHECKIDENT触发器


谢谢。

基本上,NHibernate有两种最佳的id生成器策略:
guid.comb
hilo/seqhilo
(后者在支持序列的RDBMS上可用)

hilo
生成比guid更可读的完整id,因此在本例中这将是您的选择


不要担心差距;它们并不重要。

基本上,NHibernate有两种最佳的id生成器策略:
guid.comb
hilo/seqhilo
(后者在支持序列的RDBMS上可用)

hilo
生成比guid更可读的完整id,因此在本例中这将是您的选择

不要担心差距;它们并不重要。

如果你有

  • 顺序ID的硬要求
  • 已存在不符合要求的代理密钥,并且不希望使用序列或标识
然后你需要自己实现它

我很可能会编写一个id生成器来创建唯一的顺序id。它必须使用自己的会话在数据库中存储最新的id。如果只有一个进程,则可以在内存中创建它们。

如果有的话

  • 顺序ID的硬要求
  • 已存在不符合要求的代理密钥,并且不希望使用序列或标识
然后你需要自己实现它


我很可能会编写一个id生成器来创建唯一的顺序id。它必须使用自己的会话在数据库中存储最新的id。如果您只有一个进程,则可以在内存中创建它们。

代理密钥是通过guid.comb生成的,问题是人类可读的id,即用于客户参考(采购订单号),间隙将导致不连续的订单号,从客户的角度来看,这通常不是一个好主意。将查看hiloWell,这是新信息(对顺序id的要求)。在这种情况下,最好使用触发器标识并使用触发器生成值。代理密钥是通过guid.comb生成的,问题是人类可读的id,即用于客户参考(采购订单号),间隙将导致不连续的订单号,从客户的角度来看,这通常不是一个好主意。将查看hiloWell,这是新信息(对顺序id的要求)。在这种情况下,您最好使用触发器标识并使用触发器生成值。我倾向于使用这种方法,是否有特别的原因建议使用它自己的会话?@kalki:当然有原因。许多会话可以同时访问此id生成器。它必须独立于这些会话更新(和提交)数据库。它需要自己的隔离。我倾向于这种方式,有没有特别的理由建议它自己的会议?@kalki:当然有理由。许多会话可以同时访问此id生成器。它必须独立于这些会话更新(和提交)数据库。它需要自己的孤立。