代码之家  ›  专栏  ›  技术社区  ›  Nils

如何使用SQL Server 2005在nhibernate中启用“Prepared Statements”,以及如何验证它?

  •  0
  • Nils  · 技术社区  · 14 年前

    我的配置如下:

    <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
      <session-factory name="kvws.kist.suche.dbadapter.nhentities">
        <!-- Driver -->
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    
        <!-- DB-Connection settings -->
        <property name="connection.connection_string">
        ...
        </property>
    
        <property name="adonet.batch_size">10</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="prepare_sql">true</property>
        <property name="command_timeout">0</property>
    
        <!-- other settings -->
        <!-- using a proxy is mandantory, LinFu is easiest to setup (no setup...) -->
        <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
      </session-factory>
    </hibernate-configuration>
    

    我的印象是 prepare_sql 确保在NHibernate中使用准备好的声明。然而,它并没有那种“感觉”。

    如何测试/查看是否使用了“准备好的语句”?

    以上是使用“准备好的陈述”的正确设置吗?

    其他设置是否会干扰执行?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Daniel Auger    14 年前

    您的配置文件对我来说是正确的。我知道没有其他设置会覆盖Prepare_SQL值。我所知道的证明它正常工作的唯一方法是使用SQL事件探查器查看执行计划是否被缓存/重用。

    需要注意的一点是,您需要指定长度可变(varchar等…)的参数的大小。有关更多信息,请参阅本文: http://nhforge.org/wikis/howtonh/tuning-queries-with-ms-sqlserver.aspx