在<T>存储库级别而不是实体级别使用 CreateQuery/CreateCriteria/QueryOver 从 T 中选择前 10 名



我在获取用户发布的最新 10 篇帖子时遇到了问题。我编写了以下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 

去年我写了一篇关于HQL语法的文章。

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