2012-09-04 114 views
0

我有一個頁面,我發出幾個疑問,他們都使用log4net的記錄:如何跟蹤查詢的原因/堆棧跟蹤NHibernate的

<appender name="NHibernateAppenderSQL" type="log4net.Appender.RollingFileAppender"> 
<file value="c:\dev\log\nhibernate-sql.log" /> 
<appendToFile value="true" /> 
<maximumFileSize value="10MB" /> 
<maxSizeRollBackups value="2" /> 

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date %level %thread %logger - %message%newline" /> 
</layout> 
<filter type="log4net.Filter.LevelRangeFilter"> 
    <acceptOnMatch value="true" /> 
    <levelMin value="DEBUG" /> 
    <levelMax value="FATAL" /> 
</filter> 

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
</appender> 

所以,我可以看到所有的查詢在頁面生命週期期間發佈(ASP .NET Web窗體)。我發現由於某種原因,NHibernate通過id向我的一個表發出約10個查詢。我想通過預加載數據來提高性能。但是我無法確定觸發這些查詢的地方。

我知道NHibernate的探查器可以把我放心,但我沒有執照在工作中使用它。有沒有其他方法可以找出這些查詢的原因。我還分析了映射文件,但沒有取得任何成功。

+0

使用show-SQL在配置 – kalki

回答

1

編輯:我假設你正在使用MVC ......它似乎與普通的舊ASP.NET

我用Mini Profiler找到慢了點,提高我的網站的性能工作。它是由StackOverflow創建的框架。它給你的查詢,並通過添加步驟你能確定誰是調用它。

它還與NHibernate整合到顯示執行的SQL,多久每個頁面的渲染是在SQL中度過。

+0

我用ASP .NET Web窗體,但感謝,可在我仔細檢查了未來 – dragonfly

+0

是有用的,它似乎支持你的情況。 – Iain