Установить max_lo по умолчанию для генератора NHibernate HiLo? - PullRequest
1 голос
/ 01 сентября 2011

Есть ли способ установить значение по умолчанию для max_lo, которое вступит в силу для всех сопоставленных объектов? Все мои объекты в настоящее время отображаются через Xml. Я знаю, что по умолчанию установлено значение 32678, но я бы хотел уменьшить его до 1000.

Я просмотрел конфигурацию NH xsd и не вижу там никаких настроек. Я думаю, что вы должны быть в состоянии достичь этого нормально, если вы отображаете по коду, но в настоящее время я использую Xml, и мне не хочется менять его.

Спасибо.

Ответы [ 3 ]

1 голос
/ 02 сентября 2011

вы также можете переопределить значение при генерации SessionFactory, которое выполняется только один раз:

private void InitSessionFactory()
{
     var cfg = new Configuration().Configure();
     foreach (var cm in cfg.ClassMappings) {
           if (cm.Identifier.IsSimpleValue) {
               var simpleVal = cm.Identifier as SimpleValue;
               if (simpleVal.IdentifierGeneratorStrategy == "hilo"){
                    simpleVal.IdentifierGeneratorProperties["max_lo"] = "1000";
               }
           }
     }
     sessionFactory = cfg.BuildSessionFactory();
 }

этот код NH2, поэтому для NH3 могут быть некоторые различия

0 голосов
/ 02 сентября 2011

Похоже, что это можно сделать, расширив генератор NH hilo согласно http://daniel.wertheim.se/2011/03/08/nhibernate-custom-id-generator/

0 голосов
/ 02 сентября 2011

Нет способа настроить default / global из hbm.Int16.MaxValue просто жестко задан в NHibernate (по состоянию на 3.2).TableHiLoGenerator источник :

public override void Configure(IType type, ...)
{
    ...
    maxLo = PropertiesHelper.GetInt64(MaxLo, parms, Int16.MaxValue);
    ...
}

Полагаю, вы можете открыть запрос функции здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...