nhibernate, получить последнюю строку в таблице - PullRequest
0 голосов
/ 26 апреля 2010

У пользователя может быть много адресов, но я хочу получить самую последнюю запись для пользователя.

В sql я бы сделал:

SELECT TOP 1 *
FROM UserAddress
WHERE userID = @userID

Как создать запрос критерия с той же логикой?

Есть ли ТОП функциональность?

Ответы [ 3 ]

4 голосов
/ 26 апреля 2010

Предполагая, что у вас есть некоторый столбец отметки времени (например, InsertedAt):

    User user = ...;
    var crit = DetachedCriteria.For<UserAddress>()
        .Add(Restrictions.Eq("User", user))
        .AddOrder(Order.Desc("InsertedAt"))
        .SetMaxResults(1);
1 голос
/ 26 апреля 2010

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

1 голос
/ 26 апреля 2010

В этом сообщении есть ответы на вопросы, как это сделать, но вы не всегда должны зависеть от TOP для получения последней записи! (в хронологическом порядке)

Используйте столбец времени / индекса для получения последней записи на основе значения значения временной метки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...