首页
学习
活动
专区
工具
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是不支持通过该视图查看到进行进度。后话: 如果有任何需要指正/指教/交流,可以后台评论,大家一起学习~

9610

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

搞定面试官 - 如何查看 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 估算会扫描行数,数值越小越好。

82520

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语句就显示不全,但是一个判断问题语句重要依据

5.4K20

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.2K20

NHibernate详解

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

52230

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软件实时查看

5K20

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 就是十位上数,第三张表数对应是个位。

3.7K30
领券