如何写下面的SQL查询NHibernate的

问题描述:

嘿 - 我争夺弄清楚如何编写使用NHibernate的ICriteria(多标准?)以下的以下内容:如何写下面的SQL查询NHibernate的

(这是一个查询来获取列表在最后一天的表依热门程度排序的名字)

select firstname,count(firstname) as occurances from registrants 
where timestamp between DateAdd(day,-1, GetDate()) and getdate() 
group by firstname 
order by count(firstname) desc 

此外,由于这仅仅是一个从表情侣列,不包括ID,和NHibernate需要的ID为它的对象,什么是最简单的方法来“伪造”一个ID,以便我可以得到结果?

你需要使用投影和变压器来做到这一点。下面是一些背景资料http://nhibernate.info/doc/nh/en/index.html#querycriteria-projection

var criteria = Session.CreateCriteria<Registrant>() 
    .Add(Restrictions.Between("Timestamp", DateTime.Now.AddDays(-1), DateTime.Now) 
    .AddOrder(Order.Desc(Projections.Count("FirstName"))) 
    .SetProjection(Projections.ProjectionList() 
     .Add(Projections.GroupProperty("FirstName"), "FirstName") 
     .Add(Projections.Count("FirstName"), "Occurances") 
    .SetResultTransformer(Transformers.AliasToBean<FirstNameOccurance>()); 

criteria.List<FirstNameOccurance>(); 

你需要创建一个类名为FirstNameOccurance有2个属性叫名字和Occurances。

+0

非常感谢这么多Vadim - 作品像魅力。我有一些NHibernate学习! – n00b 2011-04-11 21:33:05