【问题标题】:NHibernate not showing Update queries with ShowSql enabledNHibernate 不显示启用 ShowSql 的更新查询
【发布时间】:2012-01-31 23:52:23
【问题描述】:

我正在使用带有 NHibernate 3.1 的 Visual Studio 2010 并使用 Fluent NHibernate 进行映射。它运行良好,启用 ShowSql 后,它会显示所有选择查询。

我已经进入了我正在执行一些更新的程序部分,但它们没有显示出来。起初我认为即使我使用显式事务也不会触发更新 - 但数据库中的数据正在发生变化。所以 - 不知何故,查询正在执行,但没有显示在 Visual Studio 的输出窗口中。

有什么想法吗?

编辑 事实证明,我将两个答案混合在一起。根本不需要 Log4Net 在输出窗口中从 NHibernate 生成 UPDATE 语句。

AdoNetBatchSize(0) 与 ShowSQL 结合使用DID 可解决问题。

【问题讨论】:

  • type="log4net.Appender.TraceAppender" 如果您想编写 Visual Studio 输出窗口,请改用它。
  • 感谢您的反馈。我做了这个改变,但我仍然没有在输出中看到任何东西。我缺少配置的某些部分吗?
  • 有机会看到您执行更新的代码吗?你确定要在交易中包装这个东西吗?您是否尝试过强制提交?另外,我并不是想向您推销 NHProfiler,但您为什么不使用 30 天试用版来解决您的问题。它不会花费你任何东西。如果您尝试过 log4net 和 NHProf,您将确定是您的记录器或您的代码有问题。
  • 你在 SO 上看到过this question 吗?看起来像您的问题(有解决方案)。
  • 我尝试了 NH Profiler 试用版,我的代码运行良好。 NH Profiler 显示更新命令。而且我知道记录器没有工作 - 因为 Log4Net 甚至没有显示选择命令(ShowSQL 正在输出)。我对 NH Profiler 的强大功能毫不怀疑,我只是不想看到如果我无法长期使用它,会发生什么“可能”。我希望找出如何用核心软件解决问题,而不是第 3 方解决方案。如果 ShowSQL 不显示更新,它看起来确实是一个错误。

标签: vb.net visual-studio-2010 nhibernate fluent-nhibernate


【解决方案1】:

我建议你试试NHibernate Profiler。过去一年左右我一直在使用它,事实证明它是无价的。它将以非常有用的方式向您显示所有查询。您可以使用 30 天试用来解决您的问题。

  • 免责声明:我与 Hibernating Rhinos 或 Ayende 没有任何关系,我只是一个快乐的客户。

【讨论】:

  • 谢谢。我考虑过使用 NH Profiler,但由于我负担不起,所以我一直在努力寻找解决自己问题的方法。
  • 另一种选择是使用 log4net。看看this article
  • 我没有设置批量大小,也没有使用 Fluent NHibernate 配置的 hibernate.cfg.xml
  • 我使用 Fluent NHibernate,但我还有一个 NHibernate.config 文件。我也有一个 adonet.batch_size。无论您是以编程方式还是在配置文件中设置它都无关紧要。尝试将其设置为零? Fluently.Configure().Database(MsSqlConfiguration.....ConnectionString(c => c.FromConnectionStringWithKey("connString")) .AdoNetBatchSize(0)
  • 谢谢。当我回到代码时,我会试试这个。我假设这仅用于测试目的?似乎将批量大小设置为 0 会影响生产性能。
【解决方案2】:

您的 logConfig.xml 文件似乎缺少配置标签下的 configSections 部分。

<configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>

另一种方法是删除配置标签,使 log4net 标签位于 xml 文档的根目录。出于故障排除目的,您可以将配置放在 MyApp.exe.config 或 Web.config 中,如 this

有关详细信息,请参阅log4net documentation

如果您想使用它来记录应用的其他部分,请参阅this

【讨论】:

  • 谢谢 - 但将其添加到配置 XML 也不会导致任何日志记录被推送到输出窗口。
  • 还要检查以确保 Visual Studio 的输出窗口中的下拉列表已选择 Debug。 Log4net 对我有用,我能看到的唯一区别是您使用的是单独的文件。祝你好运!
猜你喜欢
  • 2012-11-22
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2015-10-15
相关资源
最近更新 更多