gpt4 book ai didi

Nhibernate show_sql=false 不工作

转载 作者:行者123 更新时间:2023-12-03 16:29:45 26 4
gpt4 key购买 nike

这就是我使用 Fluent Nhibernate 创建 session 工厂的方式

    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");});

但我仍然在 nhibernatesql.log 文件中生成 sql

我正在使用 NHibernate v3.1.0.4000、FluentNHibernate v1.2.0.712 和 ASP.NET MVC3

有谁知道为什么sql还在生成?

show_sql 或 ShowSql() 是否仅用于 Console.output 目的,而 sql 是否被发送到 log4net?

我主要担心的是如果 ShowSQL 设置为 true 会降低性能

不确定我是否在其他地方设置 ShowSql

最佳答案

好的,我想我得到了答案

基于 http://www.davesquared.net/2008/01/viewing-sql-generated-by-nhibernate.html

show_sql 仅用于 Console.out 目的,无论如何都会将 sql 发送到 log4net。这就是我在日志中看到 sql 的原因

关于Nhibernate show_sql=false 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com