如何使用NHibernate和Firebird生成id?

时间:2009-01-05 23:21:42

标签: nhibernate insert firebird generator

我正在尝试使用NHibernate将一些新对象插入到firebird数据库中。

我收到错误“无法获取下一个序列值[SQL:SQL not available]”

这是我目前正在使用的映射。注意ANML_EVNT是我想要使用的生成器的名称。

    <id name="Id" column="ID" type="integer">
        <generator class="sequence">
            <param name="sequence">ANML_EVNT></param>   
        </generator>


    </id>

2 个答案:

答案 0 :(得分:4)

如果您仍然在寻找答案,那么我是如何成功使用它的。

我使用“本机”生成器,因为在我们的程序中添加对SQL Server的支持时,NHibernate中唯一需要改变的是生成器类型为“native”,因为Firebird和SQL Server实现了它们的“自动递增标识”列不同。在Firebird中,它使用了命名生成器,在SQL Server中它忽略了“sequence”参数并使用了内置的自动增量。

以下是我所说的例子:

<id name="Id" column="ID">
   <generator class="native">
      <param name="sequence">ANML_EVNT</param>
   </generator>
</id>

尽管如此,正如gcores回答的那样,配置中出现的所有错误都是额外的“&gt;”在ANML_EVNT之后。

答案 1 :(得分:2)

看起来很好。问题不是ANML_EVNT之后的结束括号,对吧?

 <id name="Id" column="ID" type="integer">
      <generator class="sequence">
          <param name="sequence">ANML_EVNT</param>       
      </generator>


</id>