¿Cómo genero identificaciones con NHibernate y Firebird?
-
03-07-2019 - |
Pregunta
Estoy tratando de insertar algunos objetos nuevos en una base de datos firebird usando NHibernate.
Recibo el error " no se pudo obtener el siguiente valor de secuencia [SQL: SQL no disponible] "
Aquí está el mapeo que estoy usando en este momento. Tenga en cuenta que ANML_EVNT es el nombre del generador que quiero usar.
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT></param>
</generator>
</id>
Solución
Si todavía está buscando una respuesta, aquí es cómo la he usado con éxito.
Uso el " nativo " generador porque al agregar soporte para SQL Server a nuestro programa, lo único que tuve que cambiar en NHibernate fueron los tipos de generador a " nativo " porque Firebird y SQL Server implementan su " identidad incremental automática " columnas de manera diferente En Firebird usó el generador nombrado y en SQL Server ignora la secuencia " " parámetro y utiliza el incremento automático incorporado.
Este es el ejemplo de lo que estoy hablando:
<id name="Id" column="ID">
<generator class="native">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>
Con todo lo dicho, como contestó gcores, todo lo que parece estar mal con tu configuración es el " > " después de ANML_EVNT.
Otros consejos
Eso se ve bien. El problema no es el corchete final después de ANML_EVNT, ¿verdad?
<id name="Id" column="ID" type="integer">
<generator class="sequence">
<param name="sequence">ANML_EVNT</param>
</generator>
</id>