Вопрос

Я использую linq для Nhibernate для запуска некоторых запросов select к базе данных.

Мой вопрос: откуда мне знать запрос, сгенерированный Fluent NHibernate?

Это было полезно?

Решение

Если вы хотите, чтобы SQL был в log4net, убедитесь, что вы установили регистратор в разделе конфигурации.

Я поместил пакет NHibernate в "INFO" чтобы уменьшить шум и NHibernate.SQL для всех, чтобы я мог записывать все операторы SQL.

  
 <logger name="NHibernate">
   <level value="INFO" />
 </logger>


  <logger name="NHibernate.SQL">
    <level value="ALL" />
  </logger>

Другие советы

В Fluent NHibernate вы можете включить show_sql следующим образом:

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

NHibernate теперь будет печатать каждый SQL-оператор в Console.Out .

Вы можете также найти это полезным http://nhprof.com/

Я нашел 4 варианта, чтобы узнать SQL-запрос в nhibernate и свободно nhibernate.

<Ол>
  • Журнал - сказал Джои В. в ответ на этот же вопрос.
  • ShowSql - сказал Кевин Берридж в ответ на тот же вопрос.
  • NHProf - это потрясающий профилировщик. NHProf
  • 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;
        }
     }
    
  • См. этот . Вам нужен hibernate.show_sql .

    Вы также можете использовать профилировщики sql, например этот .

    Обязательно приобретайте и используйте NHProf . Это потрясающий продукт, который не только показывает, какие запросы выполняются, но также показывает потенциальные проблемы с производительностью сопоставлений и запросов NHibernate.

    Вы также можете подключить log4net.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top