How to obtain NHibernate generated SQL in code at runtime?

前端 未结 3 1426
-上瘾入骨i
-上瘾入骨i 2021-02-04 15:30

I know you can view the NHibernate generated SQL by hooking it up to log4net or piping it out to the console (\"show_sql\" option), but is there any way to obtain the generated

相关标签:
3条回答
  • 2021-02-04 15:33

    Here is an article describing how to get the underlying sql from hql or criteria in Hibernate; I'd imagine porting this to use NHibernate wouldn't be too tricky:

    http://narcanti.keyboardsamurais.de/hibernate-criteria-to-sql-translation.html

    0 讨论(0)
  • 2021-02-04 15:35

    In the past, I was able to view the code generated and sent to SQL by hibernate via the SQL Profiler tool. Depending on your goals, it may be able to provide what you need.

    0 讨论(0)
  • 2021-02-04 15:45

    With NHibernate 3.2, this seems to work to get the SQL from an HQL query:

    private string GetSQL(string hql)
    {
        using (var iSession = ...)
        {
            var session = (NHibernate.Engine.ISessionImplementor)iSession;
            var sf = (NHibernate.Engine.ISessionFactoryImplementor)iSession.SessionFactory;
    
            var sql = new NHibernate.Engine.Query.HQLStringQueryPlan(hql, true, session.EnabledFilters, sf);
    
            return string.Join(";", sql.SqlStrings);
        }
    }
    
    0 讨论(0)
提交回复
热议问题