1

デフォルトのバリデーターモードが に設定されている場合、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 のエンティティがあり、残っている検証定義は 2 つだけです。

4

1 に答える 1

0

私はあなたとほぼ同じ構成を持っており、私の Initialize 関数は 1 秒もかからずに終了します。私の構成とあなたの構成の間に見られる違いの 1 つは、流暢な構成の一部として次のとおりです。

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

これを指定しない場合、NHV がデフォルトで何をするかはわかりませんが、試してみる価値はあります。

また、NHV の app.config で log4net ログを設定することもできます。これにより、時間が費やされている場所を確認するのに役立つ場合があります。ログの詳細はわかりませんが、参考になるかもしれません。

他のすべてが失敗した場合は、ソースをダウンロードしてデバッグすることもできます。

編集:
以下は、NHV ログを別のファイルに入れるために使用するものです。

<logger name="NHibernate.Validator" additivity="false">
  <level value="DEBUG"/>
  <appender-ref ref="WhateverAppenderYouWant"/>
</logger>
于 2011-04-19T12:41:54.443 に答える