2011-06-23 38 views
2

這是我如何創建一個使用功能NHibernate會話工廠NHibernate的show_sql =虛假不工作

public static ISessionFactory CreateSessionFactory() 
     { 
      FluentNHibernate.Cfg.FluentConfiguration fconfig; 


      fconfig = FluentNHibernate.Cfg.Fluently.Configure() 
         .Cache(c=>c.UseQueryCache()) 
         .Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008 
             .ConnectionString(c => c.FromConnectionStringWithKey("Database")) 
         .ProxyFactoryFactory<NHibernate.ByteCode.LinFu.ProxyFactoryFactory>() 
         .Mappings(
            m => m.FluentMappings 
             .AddFromAssemblyOf<NHibernateRepositoryRegistry>() 
             .Conventions.Add<Conventions.PrimaryKeyConvention>() 
             .Conventions.Add<Conventions.IdForeignKeyConvention>() 
             .Conventions.Add<Conventions.ReferenceForeignKeyConstraintNameConvention>() 
          ) 
        // i have tried this but it did not work 
        //.ExposeConfiguration(config=>{config.SetProperty("show_sql", "false");}); 
      return fconfig.BuildSessionFactory(); 
     } 

這裏面的Web.config我log4net的配置

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
     <file value="nhibernate.log" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="100KB" /> 
     <maxSizeRollBackups value="2" /> 

     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level %thread %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="RollingFile2" type="log4net.Appender.RollingFileAppender"> 
     <file value="nhibernatesql.log" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="100KB" /> 
     <maxSizeRollBackups value="2" /> 

     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level %thread %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="NHibernate"> 
     <level value="INFO" /> 
     <appender-ref ref="RollingFile" /> 
    </logger> 


    <logger name="NHibernate.SQL"> 
     <level value="ALL" /> 
     <appender-ref ref="RollingFile2" /> 
    </logger> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingFile" /> 
    </root> 

</log4net> 

我ShowSql( )安裝過去

我試圖設置它通過web.config appsettings,所以我可以打開或關閉根據配置

所以我刪除ShowSql(),並試圖以下(現在我只是路過「假」值)

.ExposeConfiguration(config=>{config.SetProperty("show_sql", "false");}); 

也試過

.ExposeConfiguration(config=>{config.SetProperty("hibernate.show_sql", "false");}); 

,但我仍然得到SQL生成在nhibernatesql.log文件中

我使用的是NHibernate v3.1.0.4000和FluentNHibernate v1.2.0.712和ASP.NET MVC3

有沒有人知道爲什麼SQL仍然生成?

show_sql或ShowSql()僅用於Console.output目的,而sql是否發送到log4net而不管?

我主要關注的是性能下降,如果ShowSQL設置爲true

不知道我是否設置ShowSql別的地方

回答