【问题标题】:How to trace the reason/stack trace of query in NHibernate如何在 NHibernate 中跟踪查询的原因/堆栈跟踪
【发布时间】:2012-09-04 07:37:52
【问题描述】:

我有一个页面,我在其中发出了一些查询,所有这些查询都使用 log4net 进行记录:

<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 向我的一张表发出了大约 10 个 id 查询。我想通过预加载数据来提高性能。但是我无法确定触发这些查询的位置。

我知道 NHibernate Profiler 可以让我放心,但我没有在工作中使用它的许可证。有没有其他方法可以找出这些查询的原因。我也分析了映射文件,但没有任何成功。

【问题讨论】:

    标签: asp.net nhibernate log4net


    【解决方案1】:

    编辑:我假设您使用的是 MVC ...它似乎可以与普通的旧 ASP.NET 一起使用

    我使用Mini Profiler 来查找慢点并提高我的网站性能。它是由 StackOverflow 创建的框架。它为您提供查询,通过添加步骤,您可以确定谁在调用它。

    它还与nHibernate集成以显示执行的sql,以及每个页面渲染在sql中花费了多长时间。

    【讨论】:

    • 我使用 ASP .NET Web 窗体,但谢谢,将来可能会有用
    • 我仔细检查过,它似乎支持你的情况。
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多