首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何查看nHibernate生成的SQL?

要查看nHibernate生成的SQL,您可以通过以下几种方法来实现:

  1. 使用日志记录器:

在nHibernate的配置文件中,您可以启用日志记录器以记录所有生成的SQL语句。您可以使用log4net或NLog等日志记录库,将日志输出到控制台或文件中。

例如,使用log4net,您可以在配置文件中添加以下代码:

代码语言:xml
复制
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t] %-5p %c - %m%n" />
  </layout>
</appender><logger name="NHibernate.SQL">
 <level value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
</logger>
  1. 使用拦截器:

您可以创建一个实现NHibernate.IInterceptor接口的拦截器类,并在其中重写OnPrepareStatement方法。在该方法中,您可以获取到即将执行的SQL语句,并将其记录到日志中。

例如:

代码语言:csharp
复制
public class SqlInterceptor : EmptyInterceptor
{
    public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
    {
        Debug.WriteLine(sql.ToString());
        return sql;
    }
}

然后,在创建NHibernate的ISessionFactory时,将该拦截器添加到配置中:

代码语言:csharp
复制
var configuration = new Configuration();
// 其他配置代码
var sessionFactory = configuration.BuildSessionFactory();
var session = sessionFactory.OpenSession(new SqlInterceptor());
  1. 使用NHibernate Profiler:

NHibernate Profiler是一个专门用于分析NHibernate生成的SQL语句的工具。它可以帮助您优化查询性能,并提供了详细的分析报告。您可以从官方网站下载并安装该工具,然后在您的项目中使用它。

总之,通过以上方法,您可以轻松地查看nHibernate生成的SQL语句,并根据需要进行优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL|如何查看VACUUM的进度

(二)参考9.6及其以上版本推荐SQL:SELECTp.pid,now() - a.xact_start AS duration,coalesce(wait_event_type ||'.'|| wait_event...pg_stat_progress_vacuum pJOIN pg_stat_activity a USING (pid)ORDER BY now() - a.xact_start DESC;为了方便查看...为了方便查看,我们将其乘以block_size块大小,换算成我们更容易理解的KB、MB、GB等单位。...index_vacuum_count: 已完成的索引清理周期数dead_pct: 死元组的清理进度(百分比)(三)延伸 通过上述的SQL,我们可以监控vacuum执行到哪里了,还差多少完成等等,做到心里有数...注意:vacuum full是不支持通过该视图查看到进行进度的。后话: 如果有任何需要指正/指教/交流的,可以后台评论,大家一起学习~

16210
  • Android Studio如何查看JNI生成中的 preprocessorassemble file

    前两天讲了如何使用CMake+make,查看生成的预处理和汇编文件。 但是Android Studio中很尴尬的是CMake+ninja,是没法使用上述方法查看预处理和汇编的。...相信强大的gcc/clang,相信stackoverflow,不懈查找后,发现gcc/clang有个参数叫`-save-temps= `, 意如其名,保存临时文件,而预处理和汇编都是生成object的中间临时文件...set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -save-temps=obj") -save-temps 生成位置和makefile同目录 -save-temps=obj 和生成的和....o文件同目录,更方便查看 CMAKE_CXX_FLAGS对Cpp文件生效,只设置上述的C_FLAGS是无法让cpp文件生成中间文件的。...image.png 查看这些文件,还是为了更好的理解cpp,共勉 参考: https://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/Overall-Options.html

    1.4K70

    MySQL使用技巧: 如何查看mysql正在执行的SQL语句

    MySQL使用技巧: 如何查看mysql正在执行的SQL语句 背景: 最近项目开发用到MySQL,想要查看后台执行的sql语句,立马google得知、可以使用 show processlist; 命令来解决...,通过里面输出结果的字段解释中可以分析执行了的sql语句类型,但发现不太适合一般的初级使用者,而通过日志文件查看sql语句是最直接的方法。...补充: 我们也可以使用命令 show processlist; 来查看; mysql,输入show processlist; 如果有SUPER权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指...state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,  一个sql语句,已查询为例,可能需要经过copying to tmp...table,Sorting result,Sending data等状态才可以完成,   info列,显示这个sql语句,因为长度有       限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据

    8.1K20

    搞定面试官 - 如何查看 SQL 的执行计划?

    说起 SQL 优化,我们需要知道一个 SQL 的执行频率,假如说你有一条慢 SQL,好几个月才执行一次,那我觉得你其实也没啥花费精力优化它的必要,毕竟执行频率太低,投入产出比不足。...如何查询 SQL 执行频率 关于查询 SQL 执行频率,我们可以使用 show global status like 'Com___',(这后边是 7 个下划线),这条命令可以显示当前数据库中增删改查等各个语句的使用次数...这部分基本掌握这几个命令就可以了,我们可以在临时会话中开启慢 SQL 日志,然后执行对应的 SQL 语句来记录日志。...show prifile for query id 查看具体各个阶段的耗时 这两条命令结合在一起,可以明确告诉我们这条 SQL 在执行中,到底耗时在那一步,比如是某个子查询或者 Server 层数据传输等具体原因...如果 ref 是一个函数,则使用的值是函数的结果。要想查看是哪个函数,可在 EXPLAIN 语句之后紧跟一个 SHOW WARNING 语句。 rows MySQL 估算会扫描的行数,数值越小越好。

    1K20

    linux生成ssh key以及如何查看ssh key

    生成新的SSH key(私钥) 首先在终端输入 ssh-keygen -t rsa -C "email@example.com" email@example.com 为你在 GitHub或者GitLab...注册时的邮箱(或ubuntu的账户) 回车后终端会显示: Created directory '/root/.ssh'....这里有一点,如果已经存在SSH key你想要使用以上操作重新生成的话会提示一你不是要重新生成,直接输入y并按回车。 然后终端会提示: Created directory '/root/.ssh'....Enter passphrase (empty for no passphrase): 提示设置 passphrase,每次与 Git 通信都会要求输入 passphrase,以避免某些错误的操作所导致的问题...passphrase 成功后,终端显示: Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa) 最后,在 /root/.ssh/ 生成两个文件,id_rsa

    5.5K20

    MySQL查看实时执行的SQL语句

    MySQL默认不能实时查看执行的SQL语句,因为这会消耗一定的资源。 要开启这个功能,稍微配置一下,打开这个LOG记录就可以了。 1 查看LOG功能 首先,查看是否已经开启实时SQL语句记录。...语句功能,并指定自定义的log路径: mysql> SET GLOBAL general_log = 'ON'; mysql> SET GLOBAL general_log_file = '/var/...说明:这个文件会随着访问的增加而不断变大,所以生产环境建议临时开启,用完及时关闭。...3 实时查看 过一小段时间后,就可以导出查看/var/lib/mysql/sql_statement.log文件了,里面记录了所有执行的SQL语句。...如果要实时查看该文件的改动,在Linux系统用tail命令: $ tail -f /var/lib/mysql/general_sql.log 另外,也可以用BareTail软件实时查看。

    5.1K20

    NHibernate详解

    NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。...4.构建一个让NHibernate知道如何连接数据库的配置文件 5.使用NHibernate的API 第一步:写构建表的SQL 这里我们将使用的是一个非常简单的例子...NHibernate 遵循和.Net Framework同样的规则来加载类型。因此如果你在如何指定类型的方面有些混淆,请参看.Net Framework SDK。...内嵌的generator 标签告诉NHibernate 如何生成主键(它将恰当的为你生成主键,不管你指定何种类型,但你必须告诉它)。...那里有一堆属性你需要调整来确定如何让NHibernate来访问数据库。再次说明,你可以在文档里获取更多信息。 NHibernate使用log4net来记录内部发生的一切。

    71030

    SQL 生成连续的编号

    给大家一分钟,请思考:在你熟悉的数据库里使用 SQL 快速生成 001~999 的编号有哪些方法。 以下是我想到的在 MySQL 中可以实现的方法。...我把这个实现过程分成两部分: 生成 1~999 的序号; 对不足三位数的序号在前面补‘0’。 MySQL 提供了 LPAD() 左填充函数,因此第二部分已经解决。...生成 1~999 的序号的方法有: 找到任意一张记录数大于 1000 的表 t,执行 SELECT ROW_NUMBER() OVER() AS num FROM t LIMIT 999 就能够生成 1...使用递归,关于用递归生成连续序号的文章请看——生成数字序列; 手动生成 0-9 的数字,将这批数字放到临时表中,对临时表重复求笛卡尔积,具体实现后面有讲。...因此,将三张 t10 的数据表执行笛卡尔积操作,第一张表的数乘以 100 得到的是百位上的数,第二张表的数乘以 10 就是十位上的数,第三张表的数对应的是个位。

    4K30

    Fluent NHibernate之旅二--Entity Mapping

    在这里顺带介绍一下,MappingConfiguration.ExportTo(string path) 方法,它能把你的Entity Mapping自动生成hbm.xml文件到你指定的path中,我们可以生成好...hbm.xml文件,自己再看一篇,看看NHibernate的映射方式,所以是非常好的一个方法,我有时候做映射的时候,遇到问题都会生成出来,随时查看问题所在,所以说是非常有用的一个方法,而且你可以把你的映射文件直接用到...为了接下来的方便,我把Fluent的Mapping都生成到我传统方式的Mapping目录中,加入到项目,设置成嵌入的资源,一切都为了以后的教程,换句话说以后的教程中,我一般都会使用Fluent来进行映射...传统方式的映射,我是看了生成文件,也不是很复杂,而且我觉得生成的文件比我自己写的还要标准,呵呵。顺便贴一下吧。...不错不错,测试一切正常,今天的代码就到这里。 总结 今天介绍了如何映射简单的实体,但很多时候这都是理想的数据设计,还有更多复杂,不可预计的数据设计,这时候我们Fluent能做到吗?

    1K90
    领券