NHibernate выбрать самую последнюю запись, которая соответствует критериям - PullRequest
3 голосов
/ 27 января 2010

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

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

Ответы [ 2 ]

4 голосов
/ 27 января 2010

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

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

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

MyType justone = cr.UniqueResult();
0 голосов
/ 28 января 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;
...