Реализация HiLo NHibernate ID генератора - PullRequest
0 голосов
/ 08 ноября 2011

Я хотел бы использовать генератор "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; }
    }
    ....
}

Mapper

<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>

БД таблицы "Кошка" CatId bigint NOT NULL Имя varchar (16) НЕ NULL Секс чар (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. Комбинация, показанная в их уроке, работает хорошо, но дает 99,12% фрагментации, когда я добавляю в цикл объекты категории 20К. Может кто-нибудь указать мне пример реализации "hilo" или дать совет, что я пропускаю?

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

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

0 голосов
/ 08 ноября 2011

Возможно, вы столкнулись с NH-2687 .

...