NHibernate 2.1.2 - 如何禁用反射优化器

Posted

技术标签:

【中文标题】NHibernate 2.1.2 - 如何禁用反射优化器【英文标题】:NHibernate 2.1.2 - how to disable reflection optimizer 【发布时间】:2010-09-19 21:42:00 【问题描述】:

我想禁用反射优化(测试目的),但我不知道在哪里做。 NH 2.1.2 在 XML 中使用 hibernate-configuration,文档明确指出不能在此处设置此设置。 :/ 我尝试用旧的 App.config 方式使用键/值对,但运气不好......

另外,NH 2+ 版本是否对反射优化有所改变?

【问题讨论】:

看来您可以通过将 Environment.UseReflectionOptimizer 设置为 false 来禁用它,但它似乎并没有改变任何东西。此外,我尝试直接在配置对象的属性集合中更改此设置,就在 Configure() 方法之前。虽然效果一样... 顺便说一句,我这样做是为了检查此设置的效果,因为此优化的启动成本很高。我知道我可以序列化配置、拆分映射等以减少启动时间。 【参考方案1】:

你试过了吗

<add key="hibernate.use_reflection_optimizer" value="false" />


From the Hibernate Community:

我能够设置 hibernate.use_reflection_optimizer web.config 文件中的属性为 跟随。注意设置没有 内工作 休眠配置部分,所以我 必须把它放在一个新的休眠中 部分。代码现在似乎是 在中等信任环境中工作 (老爹)

  <configSections>
    <section name="hibernate-configuration"
             type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"
             requirePermission="false"/>
    <section name="nhibernate"
             type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"
             requirePermission="false"/>
  </configSections>

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="dialect">NHibernate.Dialect.mysqlDialect</property>
      <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
      <property name="connection.connection_string">blahblah</property>
      </session-factory>
  </hibernate-configuration>

  <nhibernate>
    <add key="hibernate.use_reflection_optimizer" value="false" />
  </nhibernate>

【讨论】:

是的,我做到了,但没有运气。 NH 似乎忽略了 App.config 中的 部分,它只是查找您无法定义此设置的 ... @Sapphire:请看一下我的编辑,看看那个论坛的回答是否也对你有帮助。

以上是关于NHibernate 2.1.2 - 如何禁用反射优化器的主要内容,如果未能解决你的问题,请参考以下文章

Fluent NHibernate 禁用缓存

NHibernate 和共享网络托管

使用NotFound.Ignore()的流畅Nhibernate映射禁用延迟加载和错误地获取数据

为当前线程禁用 Java 反射

NHibernate 2.1.2 中等信任度

如何禁用 Java 安全管理器?