Como faço para gerar ids com NHibernate e Firebird?
-
03-07-2019 - |
Pergunta
Eu estou tentando inserir alguns novos objetos em um banco de dados firebird usando NHibernate.
Eu recebo o erro "não poderia obter valor seguinte seqüência [SQL: SQL não disponível]"
Aqui está o mapeamento Eu estou usando no momento. Nota ANML_EVNT é o nome do gerador Quero uso.
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT></param>
</generator>
</id>
Solução
Se você ainda está procurando uma resposta aqui é como eu usei-o com sucesso.
Eu uso o gerador de "nativo" porque quando a adição de suporte para SQL Server para o nosso programa a única coisa em NHibernate Eu tive que mudar foi os tipos de geradores para "nativo" porque Firebird e SQL Server implementar o seu "auto incremento de identidade" colunas diferente. Em Firebird-lo usado o gerador de chamada e no SQL Server ignora o parâmetro "seqüência" e usa o auto-incremento construído em.
Aqui está o exemplo do que estou falando:
<id name="Id" column="ID">
<generator class="native">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>
Com tudo o que disse, como gcores respondeu, tudo o que parece ser errado com sua configuração é o extra ">" depois ANML_EVNT.
Outras dicas
Isso parece tudo bem. O problema não é o suporte de final após ANML_EVNT, certo?
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>