Come posso generare ID con NHibernate e Firebird?
-
03-07-2019 - |
Domanda
Sto cercando di inserire alcuni nuovi oggetti in un database firebird usando NHibernate.
Ricevo l'errore " impossibile ottenere il valore della sequenza successiva [SQL: SQL non disponibile] "
Ecco la mappatura che sto usando al momento. Nota ANML_EVNT è il nome del generatore che voglio usare.
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT></param>
</generator>
</id>
Soluzione
Se stai ancora cercando una risposta, ecco come l'ho usata con successo.
Uso il " nativo " generatore perché quando ho aggiunto il supporto per SQL Server al nostro programma, l'unica cosa in NHibernate che ho dovuto cambiare era il tipo di generatore in "nativo" perché Firebird e SQL Server implementano la loro "identità con incremento automatico" colonne in modo diverso. In Firebird utilizzava il generatore denominato e in SQL Server ignora la "sequenza" e utilizza l'incremento automatico incorporato.
Ecco l'esempio di cosa sto parlando:
<id name="Id" column="ID">
<generator class="native">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>
Detto questo, come ha risposto gcores, tutto ciò che sembra essere sbagliato nella tua configurazione è il extra " > " dopo ANML_EVNT.
Altri suggerimenti
Sembra tutto a posto. Il problema non è la parentesi finale dopo ANML_EVNT, giusto?
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>