【问题标题】:How to know query generated by Fluent NHibernate如何知道 Fluent NHibernate 生成的查询
【发布时间】:2010-10-23 13:45:12
【问题描述】:

我正在使用 linq to Nhibernate 来触发一些对数据库的选择查询。

我的问题是,我怎么知道 Fluent NHibernate 生成的查询?

【问题讨论】:

标签: sql nhibernate logging output


【解决方案1】:

使用 Fluent NHibernate,您可以像这样打开show_sql

Fluently.Configure()
    .Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...

NHibernate 现在会将每个 sql 语句打印到 Console.Out

【讨论】:

  • 嗨,凯文,感谢您发布此消息!我想知道您是否还连接了 Log4Net,以便将生成的 SQL 发送到文件?
  • 这太令人沮丧了。知道为什么这永远行不通吗?我正在查看我的控制台,但它不存在。
【解决方案2】:

如果您希望 SQL 位于 log4net 中,请确保您在配置部分中设置了记录器。

我将 NHibernate 包放在“INFO”以减少噪音,并将 NHibernate.SQL 放在所有位置,以便我可以记录所有 SQL 语句。

【讨论】:

    【解决方案3】:

    您可能还会发现这很有用http://nhprof.com/

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案4】:

    我找到了 4 个选项来了解 nhibernate 和 fluent nhibernate 中的 sql 查询。

    1. 日志 - Joey V. 在回答同样的问题时说。
    2. ShowSql - Kevin Berridge 回答了同样的问题。
    3. NHProf - 这是一个很棒的分析器。 NHProf
    4. Intercepter - 看到sql真是太好了。我们可以把它放在 Visual Studio 的输出中,甚至放在日志文件中。

      ISessionFactory sf = Fluently.Configure()
              .Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString).ShowSql())
              .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Stock>())
              .ExposeConfiguration(c => c.SetInterceptor(new ABCInterceptor()))
              .BuildSessionFactory();
      
      
      public class ABCInterceptor : EmptyInterceptor
      {
          public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
          {
             Trace.WriteLine(sql.ToString());
             return sql;
          }
       }
      

    【讨论】:

      【解决方案5】:

      this。你需要的是hibernate.show_sql

      【讨论】:

      • 如何使用 Fluent NHibernate 进行配置?
      【解决方案6】:

      您也可以使用像this one 这样的sql 分析器。

      【讨论】:

        【解决方案7】:

        一定购买和使用NHProf。这是一款很棒的产品,不仅可以向您展示正在运行的查询,还可以向您展示您的 NHibernate 映射和查询的任何潜在性能问题。

        【讨论】:

          【解决方案8】:

          你也可以挂在 log4net 中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-09
            • 2018-04-16
            • 1970-01-01
            相关资源
            最近更新 更多