Как генерировать идентификаторы с помощью NHibernate и Firebird?

StackOverflow https://stackoverflow.com/questions/414889

Вопрос

Я пытаюсь вставить несколько новых объектов в базу данных Firebird с помощью NHibernate.

Я получил ошибку "не удалось получить следующее значение последовательности [SQL: SQL недоступен]"

Вот отображение, которое я использую в настоящее время. Примечание. ANML_EVNT - это имя генератора, который я хочу использовать.

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


    </id>
Это было полезно?

Решение

Если вы все еще ищете ответ, вот как я успешно его использовал.

Я использую " нативную " генератор, потому что при добавлении поддержки SQL Server в нашу программу единственное, что мне пришлось изменить в NHibernate, - это типы генераторов на «родной»; потому что Firebird и SQL Server реализуют свою «автоматически возрастающую идентичность» колонки по разному. В Firebird он использовал именованный генератор, а в SQL Server он игнорирует «последовательность» параметр и использует встроенный автоинкремент.

Вот пример того, о чем я говорю:

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

После всего сказанного, как ответил gcores, все, что кажется неправильным в вашей конфигурации, это дополнительный " > " после ANML_EVNT.

Другие советы

Это выглядит хорошо. Проблема не в конце скобки после ANML_EVNT, верно?

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


</id>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top