NHibernate:如何在Windows控制台中显示生成的SQL语句

时间:2010-03-18 16:10:26

标签: sql nhibernate log4net

 return Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2008
                              .ConnectionString(c => c
                                                         .Database(Database)
                                                         .TrustedConnection()
                                                         .Server(Server)
                              ).ShowSql())
                .ExposeConfiguration(c => c.SetProperty("current_session_context_class", "web"))
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<TeamMap>()).BuildConfiguration();

我有一个网络应用程序。此配置不起作用。

我还有一个控制台应用程序,负责写出所有生成的SQL。

如何获取生成的SQL命令?

提前致谢!

1 个答案:

答案 0 :(得分:2)

由于NHibernate已经通过log4net记录SQL,这是最简单的方法。由于您不想要日志文件,请配置跟踪附加程序并通过ASP.NET Trace的常用方法查看结果。通过在代码中进行配置,您可以确定在不再需要它时它已经消失。

var appender = new log4net.Appender.AspNetTraceAppender();
appender.Layout = new log4net.Layout.PatternLayout{ ConversionPattern="%-5level - %message%newline" };
appender.Threshold = log4net.Core.Level.Info;
log4net.Config.BasicConfigurator.Configure( appender );

如果您只想要SQL语句,那么您只需要来自Info级别的NHibernate.Loader.Loader的消息。

Trace是ASP.NET中的一个日志记录工具,其结果可以在生成消息的页面末尾看到,也可以通过〜/ trace.axd

看到。

如果跟踪输出对于您的需求而言过于冗长,或者您不希望出于任何原因这样做,那么还有其他的appender可以通过网络发送日志消息。

UDPAppender 通过UDP在网络上发送日志消息。

TelnetAppender 允许您通过telnet连接到log4net。要查看消息,您可以从控制台窗口telnet到您的应用程序。

var appender = new log4net.Appender.TelnetAppender{ Port=23 };