Преобразование генератора столбцов Identity в hilo: чем следует инициализировать next_hi?

Я конвертирую класс, использующий генератор идентичности, в класс, использующий hilo. Я также использую одну таблицу с отдельной строкой для каждой сущности:

EntityId (table)
 - EntityName
 - NextHigh

Старая таблица:

Patients (table)
 - Id (identity)

Новая таблица:

PatientRecord (table)
 - Id 

Чтобы сохранить целостность данных, я просто использую существующий Patients.Id в качестве нового PatientRecord.Id:

insert into PatientRecord (Id) 
select Id from Patients

И создайте запись EntityId:

insert into EntityId values ('PatientRecord', ??)

где ?? - следующее значение hi. Какое значение я должен использовать здесь? По умолчанию инициализация столбца равна 1. Я просто использую это, или я должен использовать что-то вроде select MAX(Id) from PatientRecord?


person moribvndvs    schedule 13.09.2012    source источник
comment
Если вы используете NHibernate 3.3 или новее, вы также можете использовать генераторы Enhanced ID с одним из объединенных оптимизаторов для более простого сопоставления между сохраненным значением генераторов и следующим используемым идентификатором.   -  person Oskar Berggren    schedule 13.09.2012
comment
@OskarBerggren Спасибо за предложение. Не могли бы вы указать на какую-нибудь достойную документацию по объединенным генераторам расширенных идентификаторов?   -  person moribvndvs    schedule 17.09.2012
comment
Он работает в основном так же, как в Hibernate: docs.jboss.org/hibernate/orm/3.3/reference/en/html/ Вы также можете найти примеры в исходном коде NHibernate.Test: github.com/nhibernate/nhibernate-core/blob/master/src / Вы должны выбрать Table или Sequence на основе конструкции базы данных (но Sequence вернется к таблице при необходимости), а затем выберите оптимизатор в зависимости от того, как вы хотите обрабатывать содержимое. pooled-lo ИМХО ближе всего к естественному человеческому пониманию.   -  person Oskar Berggren    schedule 20.09.2012


Ответы (1)


Next_hi похож на сеансовый ключ, используемый для умножения для генерации идентификатора (id), поэтому вы можете вставить все, что хотите, например, 1, 2 или 10, каждый пользователь увеличивает next_hi, и с его помощью он генерирует все идентификаторы до некоторого максимального значения, а затем снова запрашивает еще один next_hi, увеличивая его ... с этой стратегией все идентификаторы уникальны ... и они могут быть сгенерированы локально

Есть ли практический способ переход от столбцов идентификаторов к ключам hilo?

http://fabiomaulo.blogspot.com/2009/02/nh210-generators-behavior-explained.html

person visar_uruqi    schedule 13.09.2012