Реализация HiLo NHibernate ID генератора

Я хотел бы использовать генератор "hilo", но нет полного примера того, как создать "конкретную" таблицу, как сказано в документации NH, и какие значения передаются ей. Следующие фрагменты кода взяты из учебника NH

public class Cat
{
    private Int64 id;
    private string name;
    private char sex;
    private float weight;

    public Cat()
    {}

    public virtual Int64 Id
    {
        get { return id; }
        set { id = value; }
    }
    ....
}

картопостроитель

<hibernate-mapping ...>
<class name="Cat" table="Cat">
  <id name="Id" >
    <column name="CatId" sql-type="Int64" not-null="true"/>
    <generator class="hilo"/>
  </id>
  <property name="Name">
    <column name="Name" length="16" not-null="true" />
  </property>
  ....
</class>
</hibernate-mapping>

Таблица БД "Cat" CatId bigint NOT NULL Имя varchar(16) NOT NULL Sex char(1) NULL Вес по умолчанию NULL ничего не создает в базе данных по умолчанию.

Параметры в узле "id"

    <param name="table">hi_value</param>
    <param name="column">next_value</param>
    <param name="max_lo">100</param>

выдает сообщение об ошибке "Неверное имя объекта" hi_value "", без них я получаю "Неверное имя объекта" hibernate_unique_key "."

Cuid.Comb, показанная в их уроке, работает хорошо, но дает 99,12% фрагментации, когда я добавляю в цикл объекты из 20K cat. Может кто-нибудь указать мне пример реализации "hilo" или дать совет, что я пропускаю?

Благодарю.

2 ответа

Решение

Это решение решило мою проблему. Это довольно просто, не знаю, почему на сайте nhibernate нет такого маленького примера.

Вы можете столкнуться с NH-2687.

Другие вопросы по тегам