Sql 如何知道Fluent NHibernate生成的查询
我正在使用linq to Nhibernate向数据库发出一些select查询Sql 如何知道Fluent NHibernate生成的查询,sql,nhibernate,logging,output,Sql,Nhibernate,Logging,Output,我正在使用linq to Nhibernate向数据库发出一些select查询 我的问题是,我如何知道Fluent NHibernate生成的查询?请参阅。您需要的是hibernate.show\u sql使用Fluent NHibernate,您可以像这样打开show\u sql: Fluently.Configure() .Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )... NHib
我的问题是,我如何知道Fluent NHibernate生成的查询?请参阅。您需要的是
hibernate.show\u sql
使用Fluent NHibernate,您可以像这样打开show\u sql
:
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernate现在将把每个sql语句打印到
控制台。Out
您可能也会发现这很有用您也可以像这样使用sql分析器。您还可以挂接log4net 如果希望SQL位于log4net中,请确保在配置部分设置了记录器
我将NHibernate包放在“INFO”以减少噪音,并将NHibernate.SQL放在all中,以便记录所有SQL语句
<logger name="NHibernate">
<level value="INFO" />
</logger>
<logger name="NHibernate.SQL">
<level value="ALL" />
</logger>
一定要购买和使用。这是一款非常棒的产品,不仅向您展示了正在运行的查询,还向您展示了NHibernate映射和查询的任何潜在性能问题。我在NHibernate和fluent NHibernate中找到了4个了解sql查询的选项
ISessionFactory sf = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString).ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Stock>())
.ExposeConfiguration(c => c.SetInterceptor(new ABCInterceptor()))
.BuildSessionFactory();
public class ABCInterceptor : EmptyInterceptor
{
public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
{
Trace.WriteLine(sql.ToString());
return sql;
}
}
ISessionFactory sf=Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString.ShowSql())
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.ExposeConfiguration(c=>c.SetInterceptor(新的ABCInterceptor()))
.BuildSessionFactory();
公共类ABCInterceptor:EmptyInterceptor
{
在PrepareStatement上公共重写NHibernate.SqlCommand.SqlString(NHibernate.SqlCommand.SqlString sql)
{
Trace.WriteLine(sql.ToString());
返回sql;
}
}
你是如何配置Fluent NHibernate的?嗨,凯文,谢谢你发布这个!我想知道您是否也连接了Log4Net,以便它将生成的SQL发送到一个文件?这太令人沮丧了。你知道为什么这行不通吗?我正在浏览我的控制台,但它不在那里。Fluent NHibernate不会生成任何查询。这是NHibernate产生的。我认为这个问题可能会帮助你:虽然这可能从理论上回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。