Выходные столбцы NHibernate / проекции CreateQuery (). List () - PullRequest
1 голос
/ 30 августа 2010

У меня простой HQL-запрос:

var list = OpenSession()
              .CreateQuery("SELECT MAX(p.price) as max_price, 
                                   COUNT(p.id) as count_all 
                            FROM Order o left join o.Products p")
              .List();

Я бы хотел вывести столбцы / проекции "max_price" и "count_all" как можно проще.

Что-то вроде:

Console.WriteLine(list[0]["max_price"]);
Console.WriteLine(list[0]["count_all]);

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 30 августа 2010

Вы можете преобразовать его в Hashtable

.SetResultTransformer(Transformers.AliasToEntityMap).List<HashTable>()[0]["max_price"];
1 голос
/ 30 августа 2010

Не уверен в этом, но я думаю, что вам нужно будет создать класс и спроектировать это. Вот так я бы начал, подойдя к нему

class UserStatistics{
 MaxPrice {get; set;}
 CountAll {get; set;}
}

var list = OpenSession()
              .CreateQuery("SELECT MAX(p.price) as max_price, 
                                   COUNT(p.id) as count_all 
                            FROM Order o left join o.Products p")
              .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(UserStatistics)))
              .List<UserStatistics>();

тогда это должно быть вопросом

Console.WriteLine(list[0].MaxPrice);
Console.WriteLine(list[0].CountAll);

Великий пост, объясняющий лучше.

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