2010-11-11 55 views
1

我想用hilo生成器配置NHibernate,但以下配置會拋出GenericADO異常,指出「無法獲取或更新下一個值[SQL:]」 。如果生成器類是「身份」,它按預期工作。配置hilo「無法獲取或更新下一個值[SQL:]」

注意。在使用hilo生成器時,我在SQL Server端將「Is Identity」設置爲「No」。

<class name="Model.Session, Domain" table="Session"> 
    <id name="SessionID" column="SessionId" type="Int32"> 
    <!--<generator class="identity" />--> 
    <generator class="hilo"/
    </id> 
    <property name="SessionToken" column="SessionToken" type="String" length="80"/> 
    <property name="UserID" column="UserId" type="Int32"/> 
</class> 

回答

2

NHibernate用來從服務器獲取「低」值的表可能還沒有創建,無論是手動或架構生成。

的基本想法是,你有兩個 數來彌補主鍵盤 - 閱讀一 「高」號和「低」號。一個 客戶端基本上可以增加 「高」序列,知道它可以安全地生成以前的「高」 值的整個範圍與各種「低」 值的鍵。

+0

請問我可以指向一個解釋hilo配置的地方,例如需要在SQL服務器中創建表。 – 2010-11-11 05:52:52

+1

http://nhforge.org/doc/nh/en/index.html#mapping-declaration-id-generator。如果手動創建,則還必須添加具有初始值的行。 – 2010-11-11 11:00:42