在Nhibernate中实现最后一个

时间:2012-04-03 06:04:23

标签: nhibernate

我正在尝试使用nhibernate在我的导航中实现第一个和最后一个。点击第一个我能够使用给定的函数找到第一行

public IList<T> GetFirstItem<T>()
    {
        using (ISession session = MvcApplication.SessionFactory.GetCurrentSession())
        {
            using (session.BeginTransaction())
            {
                return session.CreateCriteria(typeof(T)).SetFirstResult(0)
                .SetMaxResults(1)
               .List<T>();
            }
        }
    }

但我无法实现最后一个按钮。我不想使用两个查询。是否可以在单个Nhibernate查询中找到最后一项?

2 个答案:

答案 0 :(得分:1)

我认为您可能希望使用某种排序来确定第一个和最后一个项目,因此您可以使用排序ASC来获取第一个并使用DESC来获取最后一个添加排序到当前代码。

答案 1 :(得分:1)

GetFirstItem()的实施并不能保证返回第一项,因为选择查询可能会以任何顺序返回项目。所以你在随机列表中得到第一个结果。

要使您的方法正常工作,您需要在.AddOrder(Order.Asc("<some property>"))可能是数据库ID或创建时间戳的条件中添加<some property>调用。

要获取最后一项,请改为添加.AddOrder(Order.Desc("<some property>"))来电。

(顺便说一句,为什么你从一个只能得到一个项目的方法中返回一个列表?)