C# 使用ValidatorMode.OverrideAttributeWithExternal时,NHibernate验证器初始化非常慢
当默认验证器模式设置为ValidatorMode.OverrideAttributeWithExternal时,是否有任何方法可以加快NHibernate验证器初始化所需的时间 在我相当小的项目中,在我相当快的机器上完成初始化需要11秒以上: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.
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映射资源文件,这些文件在我的项目中并不存在。我知道异常处理相对较慢,但我不能确定它们是真正的罪魁祸首。