nhibernate,检索表中的最新行

Posted

技术标签:

【中文标题】nhibernate,检索表中的最新行【英文标题】:nhibernate, Retrieve the latest row in a table 【发布时间】:2010-04-25 21:19:19 【问题描述】:

一个用户可以有多个地址,但我想检索该用户的最新条目。

在 sql 中我会这样做:

SELECT TOP 1 *
FROM UserAddress
WHERE userID = @userID

如何创建具有相同逻辑的条件查询?

有 TOP 功能吗?

【问题讨论】:

【参考方案1】:

假设您有一些时间戳列(例如 InsertedAt):

    User user = ...;
    var crit = DetachedCriteria.For<UserAddress>()
        .Add(Restrictions.Eq("User", user))
        .AddOrder(Order.Desc("InsertedAt"))
        .SetMaxResults(1);

【讨论】:

这样可以吗? .SetMaxResults(1).UniqueResult(); ? 是的。只有一排:)【参考方案2】:

由于表格内容的顺序会发生变化(重新索引等),我建议您使用一些描述的时间戳来指示哪个是最新的。然后获取按该字段排序的第一个。

【讨论】:

【参考方案3】:

This post 有如何做到这一点的答案,但你不应该总是依赖TOP 来获取最新条目! (假设按时间顺序)

使用时间/索引列根据时间戳值获取最新条目。

【讨论】:

以上是关于nhibernate,检索表中的最新行的主要内容,如果未能解决你的问题,请参考以下文章

NHIbernate 和安全/业务层

如何从重复记录中检索mysql表中的最新数据

SQL如何从每个连接表中检索最新结果

如果我使用类似 NHibernate 的 ORM,为啥需要 LINQ?

使用 NHibernate 的示例查询

Abp.NHibernate连接PostgreSQl数据库