NHibernate выбирает самую последнюю запись, соответствующую критериям

Вчера вечером я начал работать над провайдером NHibernate. Я создаю критерий, которому будут соответствовать несколько записей, однако я хочу вернуть только самую последнюю запись (запись с наибольшим идентификатором). Я думал, что UniqueResult () сделает это, его нельзя использовать, если в противном случае будет возвращен список.

Теоретически я мог бы выбрать полный список, а затем вернуть желаемую запись, но я считаю, что есть способ лучше.


person splatto    schedule 27.01.2010    source источник


Ответы (2)


Можете ли вы добавить заказ?

ICriteria cr = Session.CreateCriteria<MyType>();

cr.AddOrder(Order.Desc("Id"));

MyType justone = cr.UniqueResult();
person Joel    schedule 27.01.2010
comment
Да, но мне все равно вернули список. Я хочу получить только один объект - person splatto; 28.01.2010
comment
Вы можете использовать вместе с UniqueResult(). Смотрите мое обновление. - person Joel; 28.01.2010
comment
Вы правы, я неправильно истолковал стенографию. Я дам вам правильный ответ и оставлю свой ниже, чтобы те, кто находится в подобной ситуации, могли увидеть полное тело метода. Спасибо! - person splatto; 28.01.2010

Вот, наконец, то, что требовалось. На самом деле это была комбинация нескольких вещей, которые я пробовал ранее.

MyObject mo = (MyObject)_session.CreateCriteria(typeof(MyObject))
                .Add(Restrictions.Eq("Property", value))
                .AddOrder(Order.Desc("Id"))
                .SetMaxResults(1).UniqueResult();
            Log.Info(this, string.Format("Retrieving latest MyObject {0}.", mo.Name));
            return mo;
person splatto    schedule 27.01.2010