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命令?
提前致谢!
答案 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 };