如何使用NHibernate和Firebird生成id?
-
03-07-2019 - |
题
我正在尝试使用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>
解决方案
如果您仍然在寻找答案,那么我是如何成功使用它的。
我使用“原生”生成器因为在我们的程序中添加对SQL Server的支持时,NHibernate中唯一需要更改的是生成器类型为“native”。因为Firebird和SQL Server实现了他们的“自动递增身份”列不同。在Firebird中,它使用了命名生成器,在SQL Server中它忽略了“序列”。参数并使用内置的自动增量。
以下是我所说的例子:
<id name="Id" column="ID">
<generator class="native">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>
尽管如此,正如gcores所回答的那样,配置中出现的所有错误都是额外的“&gt;”在ANML_EVNT之后。
其他提示
看起来很好。问题不是ANML_EVNT之后的结束括号,对吧?
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>
不隶属于 StackOverflow