Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate:返回已应用聚合函数的强类型列表_Nhibernate - Fatal编程技术网

NHibernate:返回已应用聚合函数的强类型列表

NHibernate:返回已应用聚合函数的强类型列表,nhibernate,Nhibernate,我希望nHibernate使用HQL从CreateQuery调用返回强类型列表 我们希望返回“MyType”的强类型列表,但希望在返回结果集之前对其应用聚合函数。不幸的是,据我所知,添加聚合字段意味着nHibernate无法将结果与“MyType”类型的签名相匹配 我们该怎么解决这个问题?下面的查询描述了我们希望从数据库返回的内容-但是“feedcount”字段影响nHibernate确定要返回的类型化列表的能力 select feedname, count(feedurl) as feedco

我希望nHibernate使用HQL从CreateQuery调用返回强类型列表

我们希望返回“MyType”的强类型列表,但希望在返回结果集之前对其应用聚合函数。不幸的是,据我所知,添加聚合字段意味着nHibernate无法将结果与“MyType”类型的签名相匹配

我们该怎么解决这个问题?下面的查询描述了我们希望从数据库返回的内容-但是“feedcount”字段影响nHibernate确定要返回的类型化列表的能力

select feedname, count(feedurl) as feedcount from rsssubscriptions group by feedurl, feedname order by feedcount desc
假设resultset必须在事件序列的早期生成,以确保nHibenate可以推断每个记录实例化的正确类型


谢谢

以下是您需要做的事情:

IList<MyObj> reults = Session.CreateQuery("select r.feedname as feedname, count(r.feedurl) as feedcount from rsssubscriptions r group by r.feedname")
                            .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(myobj)))
                            .List<MyObj>();
上述类型的属性名称必须与返回属性的别名相同,并且所有属性都必须是虚拟的

阅读以下文章,了解有关如何使用SetResultTransformer()方法的更多信息:

也可以将构造函数与HQL一起使用,请参见和
public class MyObj 
{
    public virtual long feedcount { get; set; }
    public virtual string feedname { get; set; }
}