Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ValidatorMode.OverrideAttributeWithExternal时,NHibernate验证器初始化非常慢_C#_.net_Nhibernate_Nhibernate Validator - Fatal编程技术网

C# 使用ValidatorMode.OverrideAttributeWithExternal时,NHibernate验证器初始化非常慢

C# 使用ValidatorMode.OverrideAttributeWithExternal时,NHibernate验证器初始化非常慢,c#,.net,nhibernate,nhibernate-validator,C#,.net,Nhibernate,Nhibernate Validator,当默认验证器模式设置为ValidatorMode.OverrideAttributeWithExternal时,是否有任何方法可以加快NHibernate验证器初始化所需的时间 在我相当小的项目中,在我相当快的机器上完成初始化需要11秒以上: FluentConfiguration configuration = new FluentConfiguration(); configuration .SetDefaultValidatorMode(ValidatorMode.

当默认验证器模式设置为ValidatorMode.OverrideAttributeWithExternal时,是否有任何方法可以加快NHibernate验证器初始化所需的时间

在我相当小的项目中,在我相当快的机器上完成初始化需要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个实体,只有两个验证定义。我的配置几乎与您的配置相同,初始化函数在不到一秒钟内完成。在我的配置和您的配置之间,我看到的一个不同点是,作为我的fluent配置的一部分,以下内容:

.Register(Assembly.Load("Assembly.Where.External.Internal.Attributes.Live")
           .ValidationDefinitions())
我不确定如果你不指定,NHV默认会做什么,但值得一试

另外,您可以尝试在app.config中为NHV设置log4net日志,这可能会帮助您查看时间花在哪里。我不确定日志记录的深度,但它可能会有所帮助

如果所有这些都失败了,您可以下载源代码并通过它进行调试

编辑: 下面是我用来将我的NHV日志记录放在一个单独的文件中的内容

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

你运行的是哪个版本的NHV?我不确定区别是什么,但我运行的是1.3.0.4000。我还没来得及尝试你的建议,我当然会的,但我在NHV内部看到了大量的异常吞噬,主要是关于它试图检索大量的NHV.xml映射资源文件,这些文件在我的项目中并不存在。我知道异常处理相对较慢,但我不能确定它们是真正的罪魁祸首。