Совокупный запрос с замком ActiveRecord
-
10-07-2019 - |
Вопрос
Я пытаюсь выполнить простой запрос агрегата, который возвращает результат агрегата плюс дополнительный столбец. Этот пост - > У пользовательского запроса с Castle ActiveRecord был хороший пример того, как этого добиться, но я могу Кажется, не заставить его работать. Кажется, что ActiveRecordMediator.ExecuteQuery возвращает ArrayList объектов (вместо ArrayList объекта [], что я и ожидал). Кроме того, если я пытаюсь привести его к ICollection, я получаю сообщение об ошибке во время выполнения, сообщающее о неверном приведении. Код ниже, любая помощь приветствуется (не хочу использовать рукописный sql). Р>
HqlBasedQuery query = new HqlBasedQuery(typeof(Something), @"select count(1),
p.Name from Something p
where p.SomeDate > :date
order by p.Name
group by p.Name");
query.SetParameter("date", new DateTime(2009, 1, 1));
var results = from summary in
(ICollection<object[]>)ActiveRecordMediator.ExecuteQuery(query)
select new {
Count = (int)summary[0], Name= (string)summary[1]
};
Строка после " из сводки в " тот, который генерирует недопустимое исключение приведения.
(забыл упомянуть: использование VS2008, .NET 3.5SP1, ActiveRecord 1.0RC3, NHibernate 1.2)
Решение
count (*)
вместо count (1)
(именно поэтому вы получаете только строки по 1 столбцу) ArrayList
(не универсальный ICollection
) для объекта []
count
результаты как int. Некоторые базы данных возвращают значения в виде long
(например, SQL Server)