Как узнать запрос, сгенерированный Fluent NHibernate - PullRequest
19 голосов
/ 04 мая 2009

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

У меня вопрос, откуда я знаю, запрос, сгенерированный Fluent NHibernate?

Ответы [ 8 ]

35 голосов
/ 22 мая 2009

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

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

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

6 голосов
/ 22 мая 2009

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

5 голосов
/ 07 октября 2009

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

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

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


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

3 голосов
/ 18 июля 2013

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

  1. Журнал - Джои В. сказал в ответ на тот же вопрос.
  2. ShowSql - сказал Кевин Берридж в ответ на этот же вопрос.
  3. NHProf - Это потрясающий профилировщик. NHProf
  4. Перехватчик - это действительно приятно видеть 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;
        }
     }
    
2 голосов
/ 04 мая 2009

См. это . Что вам нужно, это hibernate.show_sql.

0 голосов
/ 16 октября 2009

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

0 голосов
/ 22 мая 2009

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

0 голосов
/ 22 мая 2009

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

...