如何查看由nHibernate生成的SQL?版本1.2如何查看由nHibernate生成的SQL?
回答
你可以把这样的事情在你的app.config/web.config文件:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
在配置节点
:
在configSections节点<log4net>
<appender name="NHibernateFileLog" type="log4net.Appender.FileAppender">
<file value="logs/nhibernate.txt" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="NHibernate.SQL" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHibernateFileLog"/>
</logger>
</log4net>
而且别忘了打电话
log4net.Config.XmlConfigurator.Configure();
在您的应用程序的启动,或把
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
在AssemblyInfo.cs中
在配置设置中,“show_sql”属性设置为true。
使用sql server profiler。编辑(1年后):正如@Toran Billups所述,NHibernate profiler Ayende写的非常酷。
在配置设置中,将“show_sql”属性设置为true。 这将导致SQL在NHibernate的日志文件中输出,由log4net提供。
不错。我忘了那个。 *点击* – 2008-09-24 19:05:21
为什么这不是公认的答案? :) 谢谢你的提示。 – 2012-10-03 08:23:47
这并不显示完整的SQL。我看不到实际值,如下所示:`SELECT application0_.ApplicationId as app === App1_101_1_,application0_.ApplicationNumberCounty as ApplicationNu2_101_1 ...' – 2016-03-28 19:22:07
对于NHibernate日志记录有一个很好的参考:How to configure Log4Net for use with NHibernate。它包含有关记录所有NHibernate生成的SQL语句的信息。
Nhibernate Profiler是一个选项,如果你必须做任何严肃的事情。
您也可以尝试NHibernate Profiler(30天试用,如果没有其他)。这个工具是最好的恕我直言。
这不仅显示生成的SQL也警告/建议的/ etc
如果你使用SQL Server(不表达),你可以尝试SQL Server Profiler中。
我有点迟,我知道,但这是窍门,它是独立的工具/数据库/框架。 而不是那些有效的选项,我使用NH Interceptors。
首先,实施延伸NHibernate.EmptyInterceptor并实现NHibernate.IInterceptor类:
using NHibernate;
namespace WebApplication2.Infrastructure
{
public class SQLDebugOutput : EmptyInterceptor, IInterceptor
{
public override NHibernate.SqlCommand.SqlString
OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
{
System.Diagnostics.Debug.WriteLine("NH: " + sql);
return base.OnPrepareStatement(sql);
}
}
}
然后,当你打开你的会议只是通过一个实例。请务必仅在调试时进行:
public static void OpenSession() {
#if DEBUG
HttpContext.Current.Items[SessionKey] = _sessionFactory.OpenSession(new SQLDebugOutput());
#else
HttpContext.Current.Items[SessionKey] = _sessionFactory.OpenSession();
#endif
}
就是这样。
从现在开始,你的sql命令就像这些...
var totalPostsCount = Database.Session.Query<Post>().Count();
var currentPostPage = Database.Session.Query<Post>()
.OrderByDescending(c => c.CreatedAt)
.Skip((page - 1) * PostsPerPage)
.Take(PostsPerPage)
.ToList();
..显示直接在输出窗口:
NH:SELECT CAST(COUNT(*)作为INT)作为col_0_0_从帖子post0_
NH:选择post0_.Id作为Id3_,post0_.user_id为user2_3_,post0_.Title为 Title3_,post0_.Slug为Slug3_,post0_.Content为Content3_, post0_.created_at为created6_3_,post0_.updated_at为updated7_3_, post0_.deleted_at从帖子post0_ deleted8_3_通过订购post0_.created_at desc限制?抵消?
- 1. 如何查看由Sequelize.js生成的SQL?
- 2. 如何查看NHibernate生成的查询?
- 3. 如何查看由NHibernate完成的对db的SQL调用?
- 4. 如何在Xamarin Studio中查看由SQLite.NET PCL生成的SQL?
- 5. 如何查看SQL ActiveRecord生成的?
- 6. 预览由NHibernate生成的SQL代码
- 7. 查看Automapper生成的sql
- 8. 如何知道由流利NHibernate生成的查询
- 9. NHibernate的错误SQL生成
- 10. 我如何看到由Ruby on Rails中的给定ActiveRecord查询生成的SQL
- 11. 查看由WSO2 DSS服务生成的sql
- 12. 查看由LINQ生成的SQL - 抛出异常
- 13. 如何从linq查询中查看生成的sql
- 14. 如何查看使用Oracle数据库时由Entity Framework生成的SQL?
- 15. 查看生成的SQL语句的LLBLGen
- 16. SQL生成由
- 17. 如何查看由camlp4生成的代码
- 18. 如何查看由屏幕生成的日志文件(screenlog.0)
- 19. 如何查看由v8生成的机器码?
- 20. 如何查看由C++程序生成的.dat文件?
- 21. 如何查看由Azure计算模拟器生成的错误
- 22. 如何查看由open-uri生成的GET请求标题
- 23. 如何查看由CLR生成的本机代码?
- 24. 在Android上查看ORMLite生成的SQL
- 25. NHibernate的查询生成
- 26. Hibernate:由SQL查询生成的值
- 27. 我想看看由ASP.NET MVC应用程序生成的SQL?
- 28. 如何从我的Spring StoredProcedure中查看生成的SQL?
- 29. 如何生成SQL查询
- 30. 拦截包含由NHibernate生成的参数值的SQL语句
是比通过MB日志文件涉水更容易。 – 2009-02-06 15:53:48