2012-09-04 117 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