2009-01-05 66 views
1

我想用NHibernate插入一些新的对象到firebird数据库中。如何使用NHibernate和Firebird生成ID?

我得到错误“无法获得一个序列值[SQL:SQL不适]”

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

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


    </id> 

回答

4

如果你仍然在寻找答案,这里是我已经成功地使用它。

我使用“本地”生成器,因为当向我们的程序添加对SQL Server的支持时,我不得不更改的是生成器类型为“native”,因为Firebird和SQL Server实现了它们的“自动递增身份”列不同。在火鸟它使用了名为发生器和SQL Server忽略了“序列”参数,并使用内置的自动递增

这里就是我谈论的例子:

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

随着所有这些说,作为gcores回答,所有似乎是错误的配置是额外的“>”后ANML_EVNT。

2

这看起来没问题。问题不是ANML_EVNT之后的结束括号,对吗?

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


</id> 
+0

我不太确定你的意思...你有另一种方式我可以尝试的建议吗? – tjjjohnson 2009-01-07 03:51:17

+1

在你的示例中,在ANML_EVNT @gcores已将它删除后有一个额外的括号 – 2009-01-13 21:18:26