maxLo - это Lo-значение HiLo.
В зависимости от частоты вставок в таблицу, вы должны указать значение 10, 100 или 1000. Если вы укажете значение 10, NHibernateбудет брать значение Hi из базы данных и использовать низкое значение для генерации HiLo.
Если вы вставляете часто, вы должны указать высокий Lo (например, 100 или 1000), если вы вставляете реже, чем выследует указать низкий Lo.Это связано с тем, что новое значение Hi извлекается из базы данных каждый раз, когда создается фабрика сеанса.Если у вас текущий Hi 5 с Lo 100, и вы вставили 13 из 100 элементов, и вы создаете новую фабрику сессий (после перезапуска веб-сайта или приложения), то он получит новый Hi 6, и выбудет иметь промежутки от 513 до 600
Так что если ваш Hi в данный момент равен 3, то он будет генерировать значения от 31 до 40. Аналогично, если ваш Lo равен 1000, он будет генерировать значения от 3001 до 4000.
Дополнительные параметры позволяют указать таблицу, в которой хранится значение Hi.По умолчанию NHibernate сгенерирует эту таблицу для вас, если он настроен на создание / обновление базы данных, однако параметры позволяют вам самим настраивать таблицы.
Я недавно написал сообщение в блоге, в котором отображается число столбцов на Hi,и ряд за привет.
http://www.philliphaydon.com/2010/10/24/using-hilo-with-fluentnhibernate/
Редактировать: поведение Lo, такое как 7
HiLo рассчитывается как диапазон чисел, например, если мы имеемHi 3 и Lo 10, диапазон между:
3 * 10 = 30 до 3 * 10 + 10 = 40
Таким образом, фабрика сессий будет иметь диапазон от 30 до 40, когда вы запрашиваете Id для объекта, он захватывает его текущее значение (30) и добавляет 1. Таким образом, Id = 31. Следующий объект займет 31+1 = 32. И это происходит до тех пор, пока не достигнет 40, после чего он отправляется в базу данных и запрашивает следующий привет.
Если у вас было два веб-сервера, второй веб-сервер, возможно, запросил следующийПривет, который был 4, что означает, что первый веб-сервер получит 5.
Таким образом, ваш следующий диапазон составляет от 50 до 60.
Если Lo было 7, мы получили бы:
0 * 7 = 0 / 0 * 7 + 7 = 7 = 1-7
1 * 7 = 7 / 1 * 7 + 7 = 14 = 8-14
2 * 7 = 14 / 2 * 7 + 7 = 21 знак равно15-21
Так что все еще работает.
Но, по моему личному мнению, легче работать с целыми значениями, 10, 100, 1000.