1

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

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

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

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


    </id>
4

2 回答 2

4

如果您仍在寻找答案,这里就是我成功使用它的方式。

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

这是我正在谈论的示例:

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

话虽如此,正如 gcores 回答的那样,您的配置似乎有问题的是 ANML_EVNT 之后的额外“>”。

于 2009-01-13T20:58:34.243 回答
2

看起来没问题。问题不在于 ANML_EVNT 之后的结束括号,对吧?

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


</id>
于 2009-01-05T23:52:47.023 回答