NHibernate Validator инициализируется очень медленно с ValidatorMode.OverrideAttributeWithExternal - PullRequest
1 голос
/ 19 апреля 2011

Есть ли способ ускорить время, необходимое NHibernate Validator для инициализации, если для режима проверки по умолчанию установлено значение ValidatorMode.OverrideAttributeWithExternal?

Для завершения инициализации на моей довольно быстрой машине в моем компьютере требуется более 11 секунддовольно небольшой проект:

FluentConfiguration configuration = new FluentConfiguration();
    configuration
        .SetDefaultValidatorMode(ValidatorMode.OverrideAttributeWithExternal)
        .IntegrateWithNHibernate.ApplyingDDLConstraints().RegisteringListeners();

ValidatorEngine validatorEngine =
    NHibernate.Validator.Cfg.Environment.SharedEngineProvider.GetEngine();

validatorEngine.Configure(configuration);

// Takes 11 seconds to finish, unless the SetDefaultValidatorMode above is removed.
ValidatorInitializer.Initialize(nhibernateCfg, validatorEngine);

У меня около 50 сущностей и только два определения валидации.

1 Ответ

0 голосов
/ 19 апреля 2011

У меня почти такая же конфигурация, как у вас, и моя функция Initialize завершается менее чем за секунду. Одно из различий, которое я вижу между моей конфигурацией и вашей, заключается в следующем как часть моей свободной конфигурации:

.Register(Assembly.Load("Assembly.Where.External.Internal.Attributes.Live")
           .ValidationDefinitions())

Я не уверен, что NHV делает по умолчанию, если вы не укажете это, но оно того стоит.

Еще одна вещь, которую вы могли бы попробовать, - настроить log4net, регистрирующуюся в вашем app.config для NHV, и это может помочь вам увидеть, где тратится время. Я не уверен, насколько глубокой является регистрация, но она может быть полезна.

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

Edit:
Ниже приведено то, что я использую для записи журнала NHV в отдельный файл.

<logger name="NHibernate.Validator" additivity="false">
  <level value="DEBUG"/>
  <appender-ref ref="WhateverAppenderYouWant"/>
</logger>
...