2009-05-04 5 views
19

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

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

+3

Fluent NHibernate ** не ** генерировать какие-либо вопросы. Это NHibernate, который их генерирует. –

+0

Я думаю, этот вопрос может помочь вам: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart

ответ

5

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

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

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


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

2

См. this. Вам нужно hibernate.show_sql.

+0

спасибо .. ............. –

+7

Как вы настраиваете это с помощью Fluent NHibernate? –

35

С Fluent NHibernate, вы можете включить show_sql, как это:

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

NHibernate теперь будет печатать каждый SQL заявление Console.Out.

+1

Hi Kevin, Спасибо, что разместили это! Мне интересно, если вы также подключили Log4Net, чтобы он отправил сгенерированный SQL в файл? – 5x1llz

+13

Это так расстраивает. Любая идея, почему это никогда не будет работать? Я просматриваю свою консоль, и ее просто нет. – Milimetric

0

Вы можете использовать SQL профайлеры как this one тоже.

-1

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

0

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

2

Я нашел 4 варианта знать sql-запрос в nhibernate и свободно nhibernate.

  1. Журнал - Джои В. сказал в ответ на этот же вопрос.
  2. ShowSql - Кевин Берридж сказал в ответ на этот же вопрос.
  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; 
        } 
    }