gpt4 book ai didi

caSTLe-activerecord - 使用 CaSTLe ActiveRecord 进行自定义查询

转载 作者:行者123 更新时间:2023-12-01 11:10:37 24 4
gpt4 key购买 nike

我正在尝试了解如何使用 CaSTLe ActiveRecord 执行自定义查询。

我能够运行返回我的实体的简单查询,但我真正需要的是如下所示的查询(带有自定义字段集):

选择 count(1) 作为 cnt,来自工作站事件的数据 where serverdatetime >= :minDate and serverdatetime < :maxDate and userId = 1 group by data having 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
}

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

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

现在结果将包含具有属性 CountData 的匿名类型的集合。或者实际上您可以创建自己的摘要类型并以这种方式填充它。

ActiveRecord 也有 ProjectionQuery,它做很多相同的事情,但只能返回实际映射的属性,而不是像 HQL 那样的聚合或函数。

关于caSTLe-activerecord - 使用 CaSTLe ActiveRecord 进行自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com