Вот так я создаю Session Factory, используя Fluent Nhibernate
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();
}
Это моя конфигурация log4net внутри Web.config
<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 () настройка
, и я пытался установить ее через appsettings web.config, чтобы я мог включить или выключить ее в зависимости от конфигурации
, поэтому я удалил ShowSql () и попытался выполнить следующее (прямо сейчас яя просто передаю "ложное" значение)
.ExposeConfiguration(config=>{config.SetProperty("show_sql", "false");});
также пытался
.ExposeConfiguration(config=>{config.SetProperty("hibernate.show_sql", "false");});
, но я все еще получаю sql, сгенерированный в файле nhibernatesql.log
Я использую NHibernatev3.1.0.4000 и FluentNHibernate v1.2.0.712 и ASP.NET MVC3
кто-нибудь знает, почему sql все еще генерирует?
действительно ли show_sql или ShowSql () предназначены только для цели Console.output, а sql отправляется в log4net независимо от того?
Моя главная проблема - низкая производительность, если для ShowSQL установлено значение true
Не уверен, что я устанавливаю ShowSql где-то еще