c# - 从 nHibernate 获取执行的 SQL

标签 c# nhibernate

我正在使用 nHibernate ICriteria 执行查询,我希望能够获取语句运行后执行的 SQL。例如,我有这样的东西。

ISession session = NHibernateSessionManager.Instance.GetSession();
DetachedCriteria query = BuildCriteria(); // Goes away and constructs the ICriteria
var result = query.GetExecutableCriteria(session).List<object>()

// somehow here get the sql that was just run
string sql = query.GetSqlSomehow();

我知道我可以记录它并在日志中看到 sql,但我想在执行语句后立即获取它,以便我可以向用户显示 SQL(即使它看起来不太好)。

最佳答案

您可以将一个IInterceptor 附加到您的NH ISession,然后使用OnPrepareStatement() 方法捕获(even modify ) SQL。

关于c# - 从 nHibernate 获取执行的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1264132/

相关文章:

c# - 完成构建后,Visual Studio 2015 卡住

c# - 当我想双击时如何避免单击?

c# - 如何使用 post 变量进行重定向

.net - NHibernate 错误 - 在刷新之前保存 transient 实例

unit-testing - 运行 NHibernate 的单元测试

nhibernate - 使用 NHibernate/Fluent Nhibernate 强制插入身份

c# - Exchange 托管 API 的自动发现问题

c# - 带有鼠标悬停的列标题的 gridView 定义

mysql - NHibernate:按 ID 集合排序结果

c# - WCF 和 nHibernate 的并发问题