Sla*_*lav 3 castle-activerecord
我正在尝试弄清楚如何使用Castle ActiveRecord执行自定义查询.
我能够运行返回我的实体的简单查询,但我真正需要的是下面的查询(使用自定义字段集):
select count(1)as cnt,来自workstationevent的数据,其中serverdatetime> =:minDate和serverdatetime <:maxDate和userId = 1 group by data count(1)>:threshold
谢谢!
在这种情况下你想要的是什么HqlBasedQuery.你的查询将是一个投影,所以你将得到的是一个ArrayList包含结果的元组(ArrayList的每个元素的内容将取决于查询,但是对于多个值将是object[]).
HqlBasedQuery query = new HqlBasedQuery(typeof(WorkStationEvent),
"select count(1) as cnt, data from workstationevent where
serverdatetime >= :minDate and serverdatetime < :maxDate
and userId = 1 group by data having count(1) > :threshold");
var results =
(ArrayList)ActiveRecordMediator.ExecuteQuery(query);
foreach(object[] tuple in results)
{
int count = (int)tuple[0]; // = cnt
string data = (string)tuple[1]; // = data (assuming this is a string)
// do something here with these results
}
Run Code Online (Sandbox Code Playgroud)
您可以创建匿名类型以更有意义的方式保存结果.例如:
var results = from summary in
(ArrayList)ActiveRecordMediator.ExecuteQuery(query)
select new {
Count = (int)summary[0], Data = (string)summary[1]
};
Run Code Online (Sandbox Code Playgroud)
现在结果将包含具有属性Count和的匿名类型的集合Data.或者你确实可以创建自己的摘要类型并以这种方式填充它.
ActiveRecord也具有ProjectionQuery相同的功能,但只能返回实际的映射属性,而不是像HQL一样返回聚合或函数.
| 归档时间: |
|
| 查看次数: |
5183 次 |
| 最近记录: |