результат преобразования nhibernate в словарь - PullRequest
3 голосов
/ 13 апреля 2011

Здравствуйте, я хотел бы получить конкретный вывод в nhibernate

var hql = @"select t1.info1, t2.info2
                    from table1 t1
                    left outer join t1.table2 t2";
var variable = session.CreateQuery(hql).List();

Этот запрос возвращает массив объектов, который содержит другой массив.то есть: в первой строке info1 может быть получено с помощью переменной [0] [0], а в той же строке info2 может быть получено с помощью переменной [0] [1]

Я знаю, что могу создатьновый класс, такой как

class SpecificQuery
{
  public int info1;
  public int? info2
}

and then call :

session.CreateQuery(hql)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(SpecificQuery))).List();

Но я не хочу создавать определенный класс каждый раз, когда хочу получить специальный возврат.

Кто-нибудь знает решение этой проблемы?Например, IList > []. В этом случае первая строка info1 может быть получена с помощью переменной 0 (в случае переменной [0] [0]

Спасибо

Ответы [ 2 ]

4 голосов
/ 13 апреля 2011

Вы можете использовать AliasToEntityMapResultTranformer

session.CreateQuery(hql)
   .SetResultTransformer(Transformers.AliasToEntityMap).List();

Это вернет список объектов IDictionary.

4 голосов
/ 13 апреля 2011

NHibernate предлагает класс Tuple, который можно использовать здесь:

var hql = @"select t1.info1 as First, t2.info2 as Second
                from table1 t1
                left outer join t1.table2 t2";

// instead of Tuple<String, decimal> you can use other types of course
var variable = session.CreateQuery(hql)
        .SetResultTransformer(new AliasToBeanResultTransformer(
             typeof(NHibernate.Linq.Tuple<String, decimal>)))
        .List<NHibernate.Linq.Tuple<String, decimal>>();

Затем вы получите доступ к пунктам с

variable[0].First
variable[0].Second
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...