Как узнать запрос, созданный Fluent NHibernate
Я использую linq для Nhibernate, чтобы запустить некоторый запрос выбора в базу данных.
Мой вопрос в том, откуда я знаю, запрос, созданный Fluent NHibernate?
Ответы
Ответ 1
Если вы хотите, чтобы SQL находился в log4net, убедитесь, что вы установили регистратор в свой раздел конфигурации.
Я поместил пакет NHibernate в "INFO", чтобы уменьшить шум и NHibernate.SQL ко всем, чтобы я мог регистрировать все SQL-инструкции.
<logger name="NHibernate">
<level value="INFO" />
</logger>
<logger name="NHibernate.SQL">
<level value="ALL" />
</logger>
Ответ 2
С Fluent NHibernate вы можете включить show_sql
следующим образом:
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernate теперь распечатает каждый оператор sql до Console.Out
.
Ответ 3
Вы также можете найти этот полезный http://nhprof.com/
Ответ 4
См. this. Вам нужно hibernate.show_sql
.
Ответ 5
Я нашел 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;
}
}
Ответ 6
Вы можете использовать профилировщики sql, например этот.
Ответ 7
Определенно покупайте и используйте NHProf. Это потрясающий продукт, который не только показывает вам, какие запросы запускаются, но также показывает любые потенциальные проблемы с производительностью с отображением и запросами NHibernate.
Ответ 8
Вы также можете подключить log4net.