当前位置:  开发笔记 > 编程语言 > 正文

使用Castle ActiveRecord进行自定义查询

如何解决《使用CastleActiveRecord进行自定义查询》经验,为你挑选了1个好方法。

我正在尝试弄清楚如何使用Castle ActiveRecord执行自定义查询.

我能够运行返回我的实体的简单查询,但我真正需要的是下面的查询(使用自定义字段集):

select count(1)as cnt,来自workstationevent的数据,其中serverdatetime> =:minDate和serverdatetime <:maxDate和userId = 1 group by data count(1)>:threshold

谢谢!



1> Neil Hewitt..:

在这种情况下你想要的是什么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
} 

您可以创建匿名类型以更有意义的方式保存结果.例如:

var results = from summary in 
    (ArrayList)ActiveRecordMediator.ExecuteQuery(query)
    select new {
        Count = (int)summary[0], Data = (string)summary[1]
    };

现在结果将包含具有属性Count和的匿名类型的集合Data.或者你确实可以创建自己的摘要类型并以这种方式填充它.

ActiveRecord也具有ProjectionQuery相同的功能,但只能返回实际的映射属性,而不是像HQL一样返回聚合或函数.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有