身份生成器可以用于NHibernate的其他列

时间:2010-08-25 21:18:12

标签: nhibernate

我正在创建一个发票功能,我想使用计数器作为发票编号,但是我想知道是否可以在NHibernate中使用现有的身份生成器来获取此属性而不是编写实现?

2 个答案:

答案 0 :(得分:0)

虽然NHibernate有很多身份生成器,但Ayende,即 Mr NHibernate 自己提出反对意见:

  

在我开始之前,我想解释一下   NHibernate完全支持   身份生成器,你可以工作   很容易,没有痛苦。

     然而,有一些含义   在你的身份中使用身份生成器   系统。金枪鱼做得很好   详细说明。最常见的问题   你将遇到的是那种身份   打破了工作单元的概念。   当我们使用身份时,我们必须这样做   将值插入数据库中   我们得到它,而不是   推迟到以后的时间。它也是   渲染批处理没用。

     

并且,只是为了增加一些结冰   在蛋糕上。在SQL 2005和SQL 2008上,   身份被打破了。

     

我知道“选择不会被打破”   当时,但这次,它出现了   它确实: - )

     

我们强烈建议您使用其他一些   发电机策略,如guid.comb   (类似于新的顺序ID)或HiLo   (这也产生人类可读的   值)。

答案 1 :(得分:0)

技术上,是的,你可以。他们都是生活在NHibernate.Id的公共课堂  命名空间,因此您可以随时实例化和使用它们中的任何一个。

但在实践中,这取决于您要使用的是哪一个。其中一些非常简单,不需要任何配置或依赖,例如CounterGeneratorGuidCombGeneratorUUIDStringGenerator。其他人需要会话,如NativeGuidGenerator。其他人需要先配置才能使用,例如SequenceHiLoGenerator

我不认为NHibernate支持使用除ids和idbags以外的生成器,所以使用它们完全取决于你。