Извлечение пар столбцов псевдонимов из nhibernate sql

Я строю комплекс SQL с объединениями. Нет, в конце концов, у меня есть последняя строка slq (или выражение hql), из которой я хотел бы извлечь псевдонимы в виде пары к исходному имени столбца.

С самого начала я работаю с запросом liq, потому что не все возможно с провайдером nhibernate linq (v 3.4.1). Мне приходится работать с чистым sql. С помощью этого метода я извлекаю строку sql:

public String GetGeneratedSql(System.Linq.IQueryable queryable, ISession session) 
{ 
    var sessionImp = (ISessionImplementor)session; 
    var nhLinqExpression = new NhLinqExpression(queryable.Expression, sessionImp.Factory); 

    var translatorFactory = new ASTQueryTranslatorFactory(); 

    var translators = translatorFactory
        .CreateQueryTranslators(nhLinqExpression.Key, 
            nhLinqExpression, null, false, 
            sessionImp.EnabledFilters, sessionImp.Factory); 

    var sql = translators.First().SQLString; 
    var formamttedSql = FormatStyle.Basic.Formatter.Format(sql); 

    int i = 0; 

    var map = ExpressionParameterVisitor.Visit(queryable.Expression, sessionImp.Factory)
        .ToArray(); 

    formamttedSql = Regex.Replace(formamttedSql, @"\?", m => map[i++].Key.ToString()
        .Replace('"', '\'')); 

    return formamttedSql; 
}

Но я не знаю, как извлечь полученные псевдонимы.

0 ответов

Другие вопросы по тегам