如何查看由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. 如何查看NHibernate生成的查詢?
- 2. 如何查看由NHibernate完成的對db的SQL調用?
- 3. 如何查看SQL ActiveRecord生成的?
- 4. 預覽由NHibernate生成的SQL代碼
- 5. 如何知道由流利NHibernate生成的查詢
- 6. 查看由WSO2 DSS服務生成的sql
- 7. 我如何看到由Ruby on Rails中的給定ActiveRecord查詢生成的SQL
- 8. NHibernate的錯誤SQL生成
- 9. 如何從linq查詢中查看生成的sql
- 10. SQL生成由
- 11. 如何查看由屏幕生成的日誌文件(screenlog.0)
- 12. 如何查看由Azure計算模擬器生成的錯誤
- 13. 如何查看由v8生成的機器碼?
- 14. 如何查看由CLR生成的本機代碼?
- 15. 如何查看由open-uri生成的GET請求標題
- 16. Hibernate:由SQL查詢生成的值
- 17. 如何從我的Spring StoredProcedure中查看生成的SQL?
- 18. 如何生成SQL查詢
- 19. jQuery - 如何查看jQuery生成的html?
- 20. 查看由SSRS報告生成的SQL查詢的簡單方法?
- 21. 攔截包含由NHibernate生成的參數值的SQL語句
- 22. 如何查看爲Ecto.Query生成的原始SQL?
- 23. 如何在插入時查看LINQ生成的SQL語句?
- 24. 如何查看爲Android/SQLite生成的SQL語句
- 25. NHProf以外的其他方法允許您查看由nhibernate生成的動態SQL?
- 26. NHibernate seqhilo如何生成ID?
- 27. SQL SSRS報表生成器 - 無法查看僅查看錶?
- 28. 如何在調試期間查看由Visual Studio 2008中的LINQ-to-SQL生成的實際SQL表達式?
- 29. 如何查看包含由我的方法生成的框架的strackrace?
- 30. 由實體框架生成的SQL - 無法在輸出窗口中查看
是比通過MB日誌文件涉水更容易。 – 2009-02-06 15:53:48