从nHibernate获取执行的SQL

Cra*_*aig 8 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();
Run Code Online (Sandbox Code Playgroud)

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

Vij*_*tel 11

您可以将IInterceptorNH 附加到NH ISession,然后使用该OnPrepareStatement()方法来捕获(甚至修改)SQL.