使用CreateQuery / CreateCriteria / QueryOver <t>在存储库级别而非实体级别从T选择TOP 10 </t>

时间:2012-06-24 19:30:29

标签: nhibernate c#-4.0 hql nhibernate-criteria queryover

我一直面临着获取用户发布的最新帖子的问题。 我编写了以下Nhibernate查询,如下所示。

    public IList<T> GetLatest10Posts()
    {
        using (var session = sessionFactory.OpenSession())
        using (var transaction = session.BeginTransaction())
        {
            var queryString = String.Format("SELECT TOP 10 FROM {0} ORDER BY DateUpdated DESC", typeof(T));
            var returnVal = session.CreateQuery(queryString).List<T>();
            transaction.Commit();
            return returnVal;
        }
    }

抛出异常

  

抛出了类型'Antlr.Runtime.NoViableAltException'的异常。靠近第1行第11列

注意:DateUpdated是列名,属于DateTime类型,它存在于所有继承实体中。

QueryOver api有没有运气,因为我正在努力实现这样的目标:

session.QueryOver<T>().Take(10).OrderBy().Desc 

1 个答案:

答案 0 :(得分:2)

我去年写了一篇关于HQL语法的post

简而言之,from {0} order by DateUpdated desc take 10